我正在尝试将字符串转换为PHP
中的日期。我收到的字符串是格式化的:-
"2016-07-16T1:22:04.324+1030"
或
"2016-12-20T03:24:59.000Z"
当我尝试这个
$newDate = DateTime::createFromFormat("c", $exp);
$expirationDate = $newFormat->getTimestamp();
DateTime
失败。即使我尝试
$newDate = DateTime::createFromFormat(ISO8601, $exp;
$expirationDate = $newFormat->getTimestamp();
DateTime
仍然失败。
任何建议将不胜感激。
这样尝试:-
<?php
$time = "2016-07-16T1:22:04.324+1030";
echo date("d M, Y",strtotime(date($time)));
?>
输出:- 16 7月, 2016 :- https://eval.in/594695
参考资料:-
在 PHP 中将 ISO 8601 格式转换为 d M Y
注意:- 您可以根据自己的方便更改日期格式。 如D M d Y h:i:s O T
。我在 PHP 5.5.4、PHP 5.5.14、PHP 7 上检查了这段代码
您在此处传递的date format
不是您在函数中比较的那个,它应该如下所示
$exp = "2016-07-16T1:22:04.324+1030";
$newDate = DateTime::createFromFormat("Y-m-dTG:i:s.uO",$exp);
echo $newDate->format("Y-m-d H:i:s O");//2016-07-16 01:22:04 +1030
$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 />";
或
echo date("D M d Y h:i:s O T",strtotime($dateval));//outputs your based on your timezone time
希望它能有所帮助
虽然我回答这个问题的时间比提问晚得多,但我觉得以下几点将有助于证实已经提供的答案。
使用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