将字符串(ISO)转换为日期PHP

时间:2016-06-24 05:28:09

标签: php datetime

我正在尝试将字符串转换为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仍然失败。

非常感谢任何建议。

4 个答案:

答案 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

参考:http://php.net/manual/en/function.strtotime.php