使用strtotime和日期的数据和错误答案不一致

时间:2012-10-01 20:11:46

标签: php date strtotime

使用PHP 5.3并给出字符串Sat, 20 Oct 2012 05:00:00 GMT

print $start;
$start = strtotime($start);
var_dump($start);
$hour = date('H:i A', $start);
die($hour);

我程序中的代码片段返回:

Sat, 20 Oct 2012 05:00:00 GMT
int(1350709200)
00:00 AM

var_dump是正确的,但日期会返回错误答案。

另请注意,将该代码段更改为:

print $start;
$start = strtotime($start);
die($start);
$hour = date('H:i A', $start);
die($hour);

返回:

Sat, 20 Oct 2012 05:00:00 GMT

第一个die返回一个空字符串,一个null,我只能假设它实际上是一个布尔值FALSE。

所以我实际上有两个不同的问题,在这里。相同的答案会返回两个不同的东西,具体取决于我是var_dump还是死亡,第二个答案是该日期似乎正在接收FALSE答案,而不是var_dump答案。

帮助?

1 个答案:

答案 0 :(得分:1)

如您所说,您正在为美国/芝加哥设置时区。当你调用strtotime时,你在字符串中明确指定GMT。然后,当您将时间戳记录入日期时,它将采用时间戳并在GMT前5小时为您提供美国/芝加哥的时间,这就是为什么它是00:00 AM。

您正在使用5.3。我建议使用DateTime对象而不是strtotime()和date()。它更容易使用时区等,var_dumps很有用。从用户输入或db值创建DateTime,然后在代码中传递它而不是时间戳。