我正在建立一个考勤系统,当用户选择一个开始日期时,它将在数据库中为weekId = 1到12等创建12个条目
但这真的无关紧要,主要的是我想知道是否有更好的方法来增加下面代码的周输出。
<?php
$d=strtotime("today");
echo date("Y-m-d h:i:sa", $d) . "<br>";
for ($x = 0; $x <= 10; $x++) {
$d=strtotime("+1 week", $d);
echo date("Y-m-d h:i:sa", $d) . "<br>";
}
?>
答案 0 :(得分:1)
在字符串和日期之间来回转换效率相对较低。 PHP包含一个DatePeriod类,用于迭代日期。
您可以像这样使用它:
$begin = new DateTime('2016-03-01');
$end = new DateTime('2016-03-01');
$end->modify('+12 weeks 1 day'); // Need an extra day. Last day not included.
// Period from begin to end, at 1 week intervals.
$daterange = new DatePeriod($begin, new DateInterval('P1W'), $end);
foreach($daterange as $date){
echo $date->format("Ymd") . "\n";
}
答案 1 :(得分:1)
你的代码是对的。简单地说,你可以用这种方式缩短它:
for( $x = 0; $x < 12; $x++ )
{
echo date( "Y-m-d h:i:sa", strtotime("today +{$x} week")) . "<br>\n";
}