2016-03-13 17 views
1

我提出的考勤系统,当用户选择的开始日期,将在数据库中创建了weekId 12项= 1〜12等PHP的DateTime加1星期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>"; 
    } 
?> 

回答

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"; 
} 
+0

唉唉这是伟大的没有意识到有关DatePeriod,帮助了很多感谢的代码 –

1

你的代码是正确的。简单地说,你可以总之,它以这样的方式

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

感谢简化注解:)帮助了很多:) –

+0

@JakeGroves你受欢迎的 – fusion3k