搞砸PHP date()处理 - 可能的错误?

时间:2012-03-16 00:25:07

标签: php date timestamp

我正在编写一个在PHP中具有大量日期处理的项目。在这样做的过程中,我编写了一段始终出现故障的代码,利用了PHP的date()函数。我已经隔离了代码(项目中的其余代码是无关紧要的),这里是:

<?php
    date_default_timezone_set("GMT");
    echo date("F m, Y g:ia",strtotime("April 15, 2012 10:00am"));
    //Output: April 04, 2012 10:00am
    //Should be: April 15, 2012 10:00am
?>

理论上(我认为),此代码应计算2012年4月15日上午10:00的时间戳。这似乎正确发生。然后date()函数应该以与输入相同的格式将其转换回人类可读日期。但事实并非如此。它输出April 04, 2012 10:00am。五月,它说5月5日;六月,六月六日。所以我认为有一些错误会使月份与月份混淆。

另一方面,我可能没有考虑过一些奇怪的问题。我正在寻找第二种意见/“你是如此愚蠢,你做的X错了”。如果是个bug,我会报告。我很难相信它是一个错误,因为这些日期很快就会出现,我认为它现在已经被注意到了。

1 个答案:

答案 0 :(得分:4)

http://php.net/manual/en/function.date.php

不,你刚搞砸了你的日期格式字符串 - F m意味着“月(文字)月(数字) - 它打印04因为那是四月的月份数。

您希望j代替打印当月的日期:

echo date("F j, Y g:ia",strtotime("April 15, 2012 10:00am")); // prints "April 15, 2012 10:00am" as expected.

如果您认为自己已经检测到工具中的错误,请仔细查看您的代码!