希望添加周的日期


Want to add dates for week

我正在使用此代码add a week到日期:

$date1 = "2009-10-11";
$d = new DateTime($date1);
$d->modify( '+1 week' ); 
echo $d->format( 'Y m d' ), "'n";

它运行良好,但希望添加以下功能:

$startDate = "2009-10-11";
$endDate = "2010-01-20";

并且想要创建一个数组来保存这些日期之间的所有+1周。我该怎么做?

这里有一种方法:

$startDate = "2009-10-11";
$endDate = "2010-01-20";
$dates = array();
$temp = strtotime($startDate);
do {
  $dates[] = date("Y-m-d", $temp);
  $temp = strtotime("+1 week", $temp);
} while ($temp < strtotime($endDate));
print_r($dates);

你可以在这里看到一个演示

日期可以转换为时间戳。时间戳非常适合进行比较,因为它们基本上只是整数。

作为一个快速的"虚拟"解决方案,我会把你的日期都转换成时间戳,然后设计一个这样的循环(伪代码):

timestamp = start_timestamp
WHILE timestamp < end_timestamp
    timestamp = timestamp + 1 week
    dates[] = timestamp
END WHILE