十二月的日期不包括在内

时间:2014-05-10 02:29:52

标签: php

我想问一下,当您尝试运行下面的代码时,为什么12月会跳过?有人可以帮助我或向我解释为什么12月不包括在循环中?感谢

$date = "2013-03-31";
$d1 = explode("-",$date);
$i = 0;
while ($i < 12)
{
    $j = $d1[2];

    if(cal_days_in_month(CAL_GREGORIAN, $d1[1], $d1[0]) < $d1[2])
        $j = cal_days_in_month(CAL_GREGORIAN, $d1[1], $d1[0]) ;

    echo $d1[0]."-".$d1[1]."-".$j."<br>";

    $d1[1]++;

    if($d1[1] == 12)
    {
        $d1[0]++;
        $d1[1] = 1;
    }
    $i++;

    if($d1[1] < 10)
        $d1[1]="0".$d1[1];
}

结果:

2013-03-31
2013-04-30
2013-05-31
2013-06-30
2013-07-31
2013-08-31
2013-09-30
2013-10-31
2013-11-30
2014-01-31
2014-02-28
2014-03-31

失踪:

2013-12-31

1 个答案:

答案 0 :(得分:2)

这是我的固定版本:

<?php
$date = "2013-03-31";

$d1 = explode("-",$date);

$i = 0;

while ( $i<=12 ){

    $j = $d1[2];

    if(cal_days_in_month(CAL_GREGORIAN,$d1[1],$d1[0])<$d1[2])
        $j = cal_days_in_month(CAL_GREGORIAN,$d1[1],$d1[0]);

    echo $d1[0]."-".$d1[1]."-".$j."<br>";


    if($d1[1]==12){
        $d1[0]++;
        $d1[1] = 1;
    }else{
        $d1[1]++;
    }

    $i++;

    if($d1[1]<10)
        $d1[1] = "0".$d1[1];
}

基本上你是在错误地处理从12到1的角色。