使用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
答案。
帮助?
答案 0 :(得分:1)
如您所说,您正在为美国/芝加哥设置时区。当你调用strtotime时,你在字符串中明确指定GMT。然后,当您将时间戳记录入日期时,它将采用时间戳并在GMT前5小时为您提供美国/芝加哥的时间,这就是为什么它是00:00 AM。
您正在使用5.3。我建议使用DateTime对象而不是strtotime()和date()。它更容易使用时区等,var_dumps很有用。从用户输入或db值创建DateTime,然后在代码中传递它而不是时间戳。