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

时间:2016-03-13 21:39:48

标签: php date datetime strtotime

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

2 个答案:

答案 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";
}