Bonkers PHP几个月?

Jos*_*h K 2 php date

这是一个基本的概念验证脚本:

<?php
for($i = 1; $i < 13; $i++)
{
    echo 'Using ' . $i . ' | ';
    echo date('F', mktime(0,0,0,$i)) . " | ";
    echo date('F', strtotime('2011-' . $i . '-01')) . "<br />";
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

Using 1 | January | January
Using 2 | March | February
Using 3 | March | March
Using 4 | April | April
Using 5 | May | May
Using 6 | June | June
Using 7 | July | July
Using 8 | August | August
Using 9 | September | September
Using 10 | October | October
Using 11 | November | November
Using 12 | December | December
Run Code Online (Sandbox Code Playgroud)

二月发生了什么?

这让我很伤心,因为它刚刚停止显示二月,并开始显示三月.

Pek*_*ica 10

您使用mktime()不当.

int mktime ([ int $hour = date("H") 
            [, int $minute = date("i") 
            [, int $second = date("s") 
            [, int $month = date("n") 
            [, int $day = date("j")  <------------ here 
            [, int $year = date("Y") <------------ and here
            [, int $is_dst = -1 ]]]]]]] )
Run Code Online (Sandbox Code Playgroud)

如果不指定$day$year,他们将默认为今天的日期.

今天是30日,2月份不存在.

这将有效:

echo date('F', mktime(0,0,0,$i,1,2011)) . " | "; 
Run Code Online (Sandbox Code Playgroud)