Php 要添加一周的日期吗

Php 要添加一周的日期吗,php,date,Php,Date,我正在使用此代码为日期添加一周: $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周。我如何才能做到这一点?日期可以转换为时间戳

我正在使用此代码为日期添加一周:

$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周。我如何才能做到这一点?

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

作为一个快速的“n”脏解决方案,我要做的是将两个日期都转换为时间戳,然后设计一个这样的循环(伪代码):

timestamp=start\u时间戳
而时间戳<结束时间戳
时间戳=时间戳+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);
$startDate=“2009-10-11”;
$endDate=“2010-01-20”;
$dates=array();
$temp=strottime($startDate);
做{
$dates[]=日期(“Y-m-d”,$temp);
$temp=strottime(“+1周,$temp”);
}而($temp

您可以看到一个

您是说您想要2009-10-18和2010-01-27之间的所有日期,还是有其他解释?如果需要,您可以添加此演示;)谢谢@webeno。我修改了我的答案,删除了strotime()的太多用法,并用修改后的答案制作了一个演示。谢谢@msound brilliant@msound如果我需要在startDate和endDate之间(而不是每周)设置一组日期,你能告诉我怎么做吗?例如,只有3次,而不是每周?@Alex代替了“+1周”只做“+23天”甚至“下周一”。只要看一下@nstCactus的php文档,伪代码的问题是dates[]数组中的最后一个值将位于end_时间戳之后。因此,我的实现使用
do。。。while
而不是while
$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);