我指的是:Converting ISO 8601 format to d M Y in PHP
我也这样尝试过:echo date(“ d M Y H:i:s”,strtotime($time));
但是时间没有显示为已保存在数据库中.它显示出几个小时的差异.
数据库有:2016-03-20T23:30:51 00:00
与上面的php echo我得到:2016年3月21日00:30:51
必须在2016年3月20日23:30:51
上例显示了额外的1小时y?
我尝试使用此格式显示小时&分钟,但显示的时间不正确.时间显示相差几个小时.为什么会这样呢?
解决方法:
您的日期格式2016-03-20T23:30:51 00:00会显示GMT日期时间(旁注:php / unix时间戳所使用的同一TimeZone).
所以当你写:
echo date( "d M Y H:i:s", strtotime( $time ) );
您获得正确的日期在系统TimeZone中转换.
您可以使用DateTime类对日期执行更多操作:
$date = new DateTime( $time );
echo $date->format("d M Y H:i:s");
将以原始(GMT)格式打印日期.
$date->setTimezone( new DateTimeZone('Europe/Berlin') );
echo $date->format("d M Y H:i:s");
将在“欧洲/柏林”时区打印日期.
旁注:在ISO 8601 UTC / GTM中保存日期实际上是最佳选择.
>了解更多关于DateTime的信息
>了解更多关于DateTimeZone的信息