<?php
date_default_timezone_set("Asia/Shanghai");
/*
$day = date("d");
$month = date("m");
$year = date("Y");
*/
$day = 25;
$month = 12;
$year = 2011;
for($i=0; $i<10; $i++){
$day = date("d", mktime(0, 0, 0, $month, $day, $year));
$month = date("m", mktime(0, 0, 0, $month, $day, $year));
$year = date("Y", mktime(0, 0, 0, $month, $day, $year));
var_dump($day);
var_dump($month);
var_dump($year);
echo "<br/>";
$day++;
}
?>
结果输出这样:string '25' (length=2)string '12' (length=2)string '2011' (length=4)string '26' (length=2)string '12' (length=2)string '2011' (length=4)string '27' (length=2)string '12' (length=2)string '2011' (length=4)string '28' (length=2)string '12' (length=2)string '2011' (length=4)string '29' (length=2)string '12' (length=2)string '2011' (length=4)string '30' (length=2)string '12' (length=2)string '2011' (length=4)string '31' (length=2)string '12' (length=2)string '2011' (length=4)string '01' (length=2)string '12' (length=2)string '2011' (length=4)string '02' (length=2)string '12' (length=2)string '2011' (length=4)string '03' (length=2)string '12' (length=2)string '2011' (length=4)我看http://www.w3school.com.cn/php/func_date_mktime.asp,里面说mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入,而且我使用下面这段
<?php
date_default_timezone_set("Asia/Shanghai");
var_dump(date("Y-m-d H:i:s", mktime(0, 0, 0, 13, 35, 2011)));
?>
也确实可以得到正确结果啊,string '2012-02-04 00:00:00' (length=19)
但是为什么放在循环里面就不行呢。
$day = 25;
$month = 12;
$year = 2011;
for($i=0; $i<10; $i++){
$day = date("d", mktime(0, 0, 0, $month, $day, $year));
$month = date("m", mktime(0, 0, 0, $month, $day, $year));
$year = date("Y", mktime(0, 0, 0, $month, $day, $year));
var_dump($day);
var_dump($month);
var_dump($year);
echo "<br/>";
$day++;
if($day>31){
$month++;
$year++ ;
}
}
输出:
string(2) "25" string(2) "12" string(4) "2011"
string(2) "26" string(2) "12" string(4) "2011"
string(2) "27" string(2) "12" string(4) "2011"
string(2) "28" string(2) "12" string(4) "2011"
string(2) "29" string(2) "12" string(4) "2011"
string(2) "30" string(2) "12" string(4) "2011"
string(2) "31" string(2) "12" string(4) "2011"
string(2) "01" string(2) "01" string(4) "2012"
string(2) "02" string(2) "01" string(4) "2012"
string(2) "03" string(2) "01" string(4) "2012"
输出$day=1, 但$month没有输出,就没有改变,仍然是12下一句
$month = date("m", mktime(0, 0, 0, $month, $day, $year));这里实际上是$month = date("m", mktime(0, 0, 0, 12, 1, $year));
原来是这样,谢谢啦,改正后成这样
<?php
date_default_timezone_set("Asia/Shanghai");
/*
$day = date("d");
$month = date("m");
$year = date("Y");
*/
$day = 25;
$month = 12;
$year = 2011;
for($i=0; $i<10; $i++){
$str_date = date("Y-m-d", mktime(0, 0, 0, $month, $day, $year));
$arr_date = explode("-", $str_date);
$year = $arr_date[0];
$month = $arr_date[1];
$day = $arr_date[2];
var_dump($day);
var_dump($month);
var_dump($year);
echo "<br/>";
$day++;
}
?>
/*
$day = date("d");
$month = date("m");
$year = date("Y");
*/
$day = 25;
$month = 12;
$year = 2011;
for($i=0; $i<10; $i++){
$day1 = date("d", mktime(0, 0, 0, $month, $day, $year));
$month1 = date("m", mktime(0, 0, 0, $month, $day, $year));
$year1 = date("Y", mktime(0, 0, 0, $month, $day, $year));
var_dump($day1);
var_dump($month1);
var_dump($year1);
echo "<br/>";
$day++;
}