我在电子邮件头上有几个日期:
[date] => Tue, 10 May 2016 03:13:24 -0700
[MailDate] => 10-May-2016 10:13:24 +0000
我在我所在时区的上午10点13分收到了这封电子邮件。
$d=strtotime("10-May-2016 10:13:24 +0000");
echo "Created date is " . date("Y-m-d h:i:sa", $d);
这是我得到的输出:
Created date is 2016-05-10 11:13:24am
这不应该显示时间是上午10:13:24吗?
简短回答
不,代码中没有任何内容可以保证看到10:13:24而不是11:13:24。
为什么
您正在使用+0000
定义时区,因此不能保证结果准确无误。即使您的时区是GMT(+0000),脚本中也没有定义您的时区。唯一存在时区的是该字符串的时区的定义。
请确保您的时区是在PHP中永久设置的,或者是在此脚本中临时设置的。
更改php.ini(进行永久更改),或在执行日期/时间相关功能之前添加一行设置时区:
date_default_timezone_set ( string $timezone_identifier );
http://php.net/manual/en/function.date-default-timezone-set.php
在编写脚本之前尝试一下,看看脚本输出了什么。如果一切都设置正确,你就会得到合适的时间。
否则,您总是可以从strtotime()
调用中删除+0000
。
尝试不使用+0000
部件:
$d=strtotime("10-May-2016 10:13:24");
echo "Created date is " . date("Y-m-d h:i:sa", $d);