我编写了获取订阅开始日期的代码;从infusionsoft的结束日期,它以这种格式返回
开始日期=20151217T00:00
结束日期=20161217T00:00
如何将格式设置为YYYY/MM/DD H:M:S?
以及"T"代表
根据ISO 8601标准,T是日期和时间部分之间的分隔符。
参见:ISO 8601标准,维基百科
有两种功能可以使用:
-
strtotime(date_time_string)
将日期/时间字符串转换为时间戳。
-
日期(格式、时间戳)
根据"format"将时间戳格式化为字符串。
示例代码…
$so_string = '20151217T00:00:00';
$eo_string = '20161217T00:00:00';
$sd_stamp = strtotime($so_string);
$ed_stamp = strtotime($eo_string);
$f_datetime ='Y/m/d H:i:s';
echo 'Start date<br />';
echo ' original: ' . $so_string . '<br />';
echo ' timestamp: ' . $sd_stamp . '<br />';
echo ' formatted: ' . date($f_datetime,$sd_stamp) . '<br /><br />';
echo 'End date<br />';
echo ' original: ' . $eo_string . '<br />';
echo ' timestamp: ' . $ed_stamp. '<br />';
echo ' formatted: ' . date($f_datetime,$ed_stamp) . '<br />';
…将产生以下输出:
Start date
original: 20151217T00:00:00
timestamp: 1450306800
formatted: 2015/12/17 00:00:00
End date
original: 20161217T00:00:00
timestamp: 1481929200
formatted: 2016/12/17 00:00:00
假设当前开始和结束日期存储在$startDate
和$endDate
变量中。。。
$formattedStartDate = date("Y/m/d H:i:s", strtotime($startDate));
$formattedEndDate = date("Y/m/d H:i:s", strtotime($endDate));
这使用了date()和strtotime()函数
就"T"而言。。。
请注意,"T"在字符串中按字面意思出现,表示时间元素的开始,如ISO 8601中所规定。
https://www.w3.org/TR/NOTE-datetime-970915
您可以使用日期函数格式化时间。
date('YYYY/MM/DD H:M:S',strtotime('$date_value'));
这将DateTime与createFromFormat函数一起使用。有关更多信息,请单击此处。
需要PHP 5>=5.3.0,PHP 7
//infusionsoft format
$startDate = '20151217T00:00:00';
$endDate = '20161217T00:00:00';
//create DateTime object
$startDateTime = DateTime::createFromFormat('YmdTH:i:s', $startDate);
$endDateTime = DateTime::createFromFormat('YmdTH:i:s', $endDate);
//get DateTime with specified format
$newStartTime = $startDateTime->format('Y/m/d H:i:s');
$newEndTime = $endDateTime->format('Y/m/d H:i:s');