PHP日期()处理混乱-可能存在错误


Messed up PHP date() handling - possible bug?

我正在写一个用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()函数应该将其转换回与输入格式相同的人类可读日期。但事实并非如此。输出CCD_ 3。5月,上面写着5月5日;六月,六月六日。所以我认为有一些错误使它混淆了月份的日期和月份本身。

另一方面,这可能是一些我从未考虑过的奇怪问题。我在寻求第二种意见/"你太愚蠢了,你做错了X"。如果是错误,我会报告的。我很难相信这是错误,因为这些日期来得这么快,我想现在已经注意到了。

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.

每当你认为你在工具中检测到错误时,都要仔细查看你的代码!