Php 时间有时返回错误的一天

Php 时间有时返回错误的一天,php,wordpress,mktime,Php,Wordpress,Mktime,我对mktime有一个简单的问题。我发现以下代码: echo date("Y-M-d", mktime(11, 45, 0, 01, 05, 2014)); echo ", "; echo date("Y-M-d", mktime(11, 45, 0, 01, 06, 2014)); echo ", "; echo date("Y-M-d", mktime(11, 45, 0, 01, 07, 2014)); echo ", "; echo date("Y-M-d", mktime(11, 45

我对mktime有一个简单的问题。我发现以下代码:

echo date("Y-M-d", mktime(11, 45, 0, 01, 05, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 06, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 07, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 08, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 09, 2014)); echo ", ";
正在生成以下输出:

2014-Jan-05, 2014-Jan-06, 2014-Jan-07, 2013-Dec-31, 2013-Dec-31
date函数只是为了让它更具可读性;mktime本身返回的时间戳是错误的。唯一改变的是一个月中的哪一天,所以我不知道为什么在7号和8号之间会有间断,或者为什么8号和9号都在同一天返回

我已经检查过,小时、分钟和秒不会改变错误日期的结果,尽管它们会改变确切的时间戳。也就是说,上面的最后两行返回完全相同的时间戳1388508300,但是如果我更改小时,时间戳中的相对变化与预期的一样


如果上下文很重要,这将在WordPress安装的PHP5.3中运行。

在您的日期和月份之前去掉前导零

echo date("Y-M-d", mktime(11, 45, 0, 1, 5, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 1, 6, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 1, 7, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 1, 8, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 1, 9, 2014)); echo ", ";

以0开头的整数文本。。都是八进制的。不存在八进制或更高的08,您得到的值是完全错误的。第五天的值是5,而不是05,依此类推。

和月份。到了08年和09年,你也会遇到大问题;当然,当我点击“提问”时,我也想到了这种可能性。我不知道格式化日期的前导零!在PHP中,被解释为八进制数。为了完全正确,我还必须从1月1日起删除前导零,否则我将在8月份遇到另一个问题。@GJP 08不是一个日期,它只是一个数字…: