php DateTime 在for循环中添加1周12次

php DateTime add 1 week 12 times in a for loop

我正在制作一个考勤系统,当用户选择开始日期时,它将在数据库中为 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>";
     }
?>

一直在字符串和日期之间来回转换,效率比较低。 PHP 包含一个 DatePeriod class 是为迭代日期而设计的。

你可以这样使用它:

$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";
}

你的代码是正确的。简单的,你可以这样做空:

for( $x = 0; $x < 12; $x++ )
{
    echo date( "Y-m-d h:i:sa", strtotime("today +{$x} week")) . "<br>\n";
}