php电子邮件头上的日期/时间查询


php date / time query on email header

我在电子邮件头上有几个日期:

[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);