PHP中mktime()的输出错误

时间:2012-10-28 10:44:37

标签: php

我正在尝试设置一个php,它将每年的9月1日设置为日期。我正在使用CRON声明每次日期是9月7日,然后php将实际更新数据库,以查找日期为9月7日(9月9日)前一周的行。

现在我的代码在10月28日进行了测试,当我回复$selectedDate时,它会输出2012-10-28,这很好。但是当我将日期更改为9月1日时,它会输出`2011-12-01,这显然是不正确的。它应该输出`2013-09-01,因为下一个9月的日期将是2013年。然后在2013年9月的Ist日期过后,那一年应该改为2014年等等。

如何才能输出正确的日期?

以下是代码:

$createDate = mktime(0,0,0,09,01,date("Y"));
$selectedDate =  date('Y-m-d', ($createDate));

1 个答案:

答案 0 :(得分:3)

那是因为09被解释为八进制9 ,这是无效的。

当您通过9而不是09时,它会按预期工作:

$createDate = mktime(0,0,0,9,1,date("Y"));
//                         ^ ^  No preceeding 0s.
$selectedDate =  date('Y-m-d', ($createDate));

var_dump($createDate, $selectedDate);