我试图用PHP循环日期.目前我的代码卡在一个重复110307的循环中.我需要日期格式为yymmdd.这是我试图使用的:
<?php
$check_date = '100227';
$end_date = '100324';
while($check_date != $end_date){
$check_date = date("ymd", strtotime("+1 day", strtotime($check_date)));
echo $check_date . '<br>';
}
?>
Run Code Online (Sandbox Code Playgroud)
尝试使用unix时间戳并每次添加86400.这比打电话要快strtotime()
.您可以在线查找时间戳转换.
<?php
$check_date = 1267228800; // '2010-02-27';
$end_date = 1269388800; // '2010-03-24';
while($check_date != $end_date){
$check_date += 86400;
echo date("Ymd", $check_date) . '<br>';
}
?>
Run Code Online (Sandbox Code Playgroud)
strtotime
将"100227"解释为今天10:02:27,而不是2010-02-27.所以在第一步之后,$check_date
(今天)是"110307".在所有后续步骤中,"110307"再次被解释为今天的时间,$check_date
再次给出"110307".
迭代日期的一个巧妙方法是利用mktime标准化日期的能力,如下所示:
$date_arr = array(27,2,2010);
$end_date = "100324";
do {
$check_date = gmdate('ymd', gmmktime(0,0,0,$date_arr[1],$date_arr[0]++,$date_arr[2]));
echo $check_date."\n";
} while($end_date!=$check_date);
Run Code Online (Sandbox Code Playgroud)