2

使用 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

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

所以我实际上有两个不同的问题,在这里。根据我是否var_dump死亡,相同的答案会返回两个不同的东西,第二个是该日期似乎收到了错误的答案,而不是var_dump答案。

帮助?

4

1 回答 1

1

正如您所说,您将时区设置为美国/芝加哥。当您调用 strtotime 时,您在字符串中明确指定 GMT。然后,当您将时间戳放入日期时,它会获取时间戳并在格林威治标准时间前 5 小时为您提供美国/芝加哥的时间,这就是为什么它是上午 00:00。

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

于 2012-10-01T20:32:57.007 回答