我正在尝试将字符串转换为PHP
中的日期。我收到的字符串格式为: -
"2016-07-16T1:22:04.324+1030"
OR
"2016-12-20T03:24:59.000Z"
当我尝试这个时
$newDate = DateTime::createFromFormat("c", $exp);
$expirationDate = $newFormat->getTimestamp();
DateTime
失败。即使我尝试
$newDate = DateTime::createFromFormat(ISO8601, $exp;
$expirationDate = $newFormat->getTimestamp();
DateTime
仍然失败。
非常感谢任何建议。
答案 0 :(得分:3)
您可以尝试这样: -
<?php
$time = "2016-07-16T1:22:04.324+1030";
echo date("d M, Y",strtotime(date($time)));
?>
输出: - 2016年7月16日: - https://eval.in/594695
参考文献: -
Converting ISO 8601 format to d M Y in PHP
注意: - 您可以根据自己的方便更改日期格式。比如D M d Y h:i:s O T
。我在PHP 5.5.4,PHP 5.5.14,PHP 7上检查了这段代码
答案 1 :(得分:2)
你在这里传递的date format
不是你在函数中所比较的那个{/ 1}}
$exp = "2016-07-16T1:22:04.324+1030";
$newDate = DateTime::createFromFormat("Y-m-d\TG:i:s.uO",$exp);
echo $newDate->format("Y-m-d H:i:s O");//2016-07-16 01:22:04 +1030
答案 2 :(得分:0)
onReceivedError()
或
$dateval="2016-07-16T1:22:04.324+1030";
$dateval=str_replace("T"," T",$dateval);
$date = new DateTime($dateval);
echo $date->format('D M d Y h:i:s O T');//outputs your given time
echo "<br />";
希望它会帮助
答案 3 :(得分:0)
虽然我在回答这个问题的时间晚于问题,但我觉得以下几点有助于证实已经提供的答案。
使用strtotime功能时要记住的重点:
<强> 1。年份为两位数:如果字符串中以两位数指定年份,则00-69之间的值将映射到2000-2069和70-99到1970-1999。 32位可能出现差异。
<强> 2。使用分隔符:使用分隔符可能会出现意外输出。分隔符斜杠(“/”)将指示PHP日期为美国格式,即m / d / y。虽然分隔符破折号或点(“ - ”或“。”)将允许PHP采用欧洲格式,即d-m-y。此外,如果使用破折号分隔符将两年指定为年份,则PHP将其视为y-m-d格式。
第3。时间戳范围:典型的有效时间戳范围从星期五,1901年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC,表示最小和最大32位有符号整数。但是对于64位版本的PHP,时间戳的有效范围几乎是无限的。
<强> 4。检查字符串是否为有效时间戳:在strtotime函数中作为参数提供的字符串可以提供不同版本的不同结果。 早于5.1.0的PHP将在失败时返回 -1 ,而更高版本将返回 false