我正在编写一个在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,我会报告。我很难相信它是一个错误,因为这些日期很快就会出现,我认为它现在已经被注意到了。
答案 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.
如果您认为自己已经检测到工具中的错误,请仔细查看您的代码!