PHP从特定的开始日期获取周期性的一周

PHP从特定的开始日期获取周期性的一周,php,arrays,date,Php,Arrays,Date,我正在尝试设置一个如下所示的阵列: $dates = array( [0] => "07/11/2013", [1] => "14/11/2013", [2] => "21/11/2013", [3] => "28/11/2013", [4] => "05/12/2013", [5] => "12/12/2013"); 我愿意使用它,但由于我希望它明年再次出现,我更愿意让PHP这样做,并为我将其输入到一个数组中

我正在尝试设置一个如下所示的阵列:

$dates = array(
    [0] => "07/11/2013",
    [1] => "14/11/2013",
    [2] => "21/11/2013",
    [3] => "28/11/2013",
    [4] => "05/12/2013",
    [5] => "12/12/2013");
我愿意使用它,但由于我希望它明年再次出现,我更愿意让PHP这样做,并为我将其输入到一个数组中。我知道如何将其限制在我想要的特定数量,但我不知道如何在当前日期或特定日期上添加一周,例如,如果我想开始
08/11/2013

我快速地看了一下,似乎找不到任何与此相关的东西

我只需要一个脚本将一周添加到当前日期,现在是每周四,然后将其添加到数组中

我唯一的问题是我不知道如何指定一个日期,然后每次添加一周。我认为这里最好使用
for
循环。

满足您的需要

 $nextWeek = strtotime('08/11/2013 + 1 week'); 
如果你需要8次,循环8次。您可以使用
$start
$numWeek
创建函数,以返回带有
$numWeek
+1值的数组(添加了start)

函数createDateList($start,$numWeeks){
$dates=数组($start);//添加第一个日期
//使用$numWeeks illiterations创建一个循环:
for($i=1;$满足您的需要

 $nextWeek = strtotime('08/11/2013 + 1 week'); 
如果需要8次,请将其循环8次。您可以使用
$start
$numWeek
创建一个函数,以返回带有
$numWeek
+1个值的数组(添加了start)

函数createDateList($start,$numWeeks){
$dates=数组($start);//添加第一个日期
//使用$numWeeks illiterations创建一个循环:

对于($i=1;$,您可以使用
strotime(“+1周”,$unixTimestamp)
来实现此目的:

<?php
    $startDate = '2013-11-07';
    $endDate = '2013-12-31';

    $startDateUnix = strtotime($startDate);
    $endDateUnix = strtotime($endDate);

    $dates = array();

    while ($startDateUnix < $endDateUnix) {
        $dates[] = date('Y-m-d', $startDateUnix);
        $startDateUnix = strtotime('+1 week', $startDateUnix);
    }

    print_r($dates);
?>


(以任何方式格式化
date()
调用,以获得所需的格式)。

您可以使用
strotime(“+1周”,$unixTimestamp)
进行以下操作:

<?php
    $startDate = '2013-11-07';
    $endDate = '2013-12-31';

    $startDateUnix = strtotime($startDate);
    $endDateUnix = strtotime($endDate);

    $dates = array();

    while ($startDateUnix < $endDateUnix) {
        $dates[] = date('Y-m-d', $startDateUnix);
        $startDateUnix = strtotime('+1 week', $startDateUnix);
    }

    print_r($dates);
?>

(将
date()
调用格式化为任何您想要的格式)。

函数在这里工作吗

$nextweek = strtotime('thursday next week');
$date = date('d/m/Y', $nextweek);
要创建包含今天(或本周四)和下一个4元素的5元素数组,请执行以下操作:

for ($a = 0; $a < 5; $a++)
{
  $thur = date('d/m/Y', strtotime("thursday this week + $a weeks"));
  $dates[] = $thur;
}
($a=0;$a<5;$a++)的

{
$thur=日期('d/m/Y',标准时间(“本周星期四+$a周”);
$dates[]=$thur;
}
strotime()函数在这里工作吗

$nextweek = strtotime('thursday next week');
$date = date('d/m/Y', $nextweek);
要创建包含今天(或本周四)和下一个4元素的5元素数组,请执行以下操作:

for ($a = 0; $a < 5; $a++)
{
  $thur = date('d/m/Y', strtotime("thursday this week + $a weeks"));
  $dates[] = $thur;
}
($a=0;$a<5;$a++)的

{
$thur=日期('d/m/Y',标准时间(“本周星期四+$a周”);
$dates[]=$thur;
}
使用类。在PHP 5.3.0中引入了DateInterval和DatePeriod类,因此以下解决方案仅适用于PHP>=5.3.0:

$start = new DateTime('2013-11-07');
$end = new DateTime('2013-12-31');
$interval = new DateInterval('P1W');  // one week

$p = new DatePeriod($start, $interval, $end);

foreach ($p as $w) {
    $weeks[] = $w->format('d-m-Y');
}

正如Glavic在中所指出的,这也可以在以前版本的PHP中使用以下方法完成:

$start=newdatetime('2013-11-07');
$end=新日期时间('2013-12-31');
$weeks=array();
while($start<$end){
$weeks[]=$start->format('d-m-Y');
$start->modify(“+1周”);
}
使用类。在PHP 5.3.0中引入了DateInterval和DatePeriod类,因此以下解决方案仅适用于PHP>=5.3.0:

$start = new DateTime('2013-11-07');
$end = new DateTime('2013-12-31');
$interval = new DateInterval('P1W');  // one week

$p = new DatePeriod($start, $interval, $end);

foreach ($p as $w) {
    $weeks[] = $w->format('d-m-Y');
}

正如Glavic在中所指出的,这也可以在以前版本的PHP中使用以下方法完成:

$start=newdatetime('2013-11-07');
$end=新日期时间('2013-12-31');
$weeks=array();
while($start<$end){
$weeks[]=$start->format('d-m-Y');
$start->modify(“+1周”);
}

你现在做得怎么样?看看
date
strotime
。你现在做得怎么样?看看
date
strotime
。但是你是如何在周期性的几周内做这件事的?但是在周期性的几周内你是如何做这件事的?虽然这是一个好的解决方案,但它只适用于php 5.4和phpup:)不是很少见,但如果版本较低,则可能会导致失望:)@Martijn:是的,但是DateTime是最好的。我在顶部添加了一个解释。干杯:)我看到了一些使用下面答案的示例,但是,我现在运行的是5.4.7,这非常适合我的需要,谢谢!@Martijn,AmalMurali:DateInterval和DatePeriod类是在PHP5.3.0中引入的;不知道你在哪里发现它只起作用>=5.4.0上的rks?这段代码可以修改,这样它就可以在PHP>=5.2.0上运行,就像。@Glavić:Oops。我已经更新了答案。谢谢:)虽然是一个很好的解决方案,但这只适用于PHP 5.4及以上:)不是很少见,但如果版本较低,可能会导致失望:)@Martijn:是的,但DateTime是最好的。我在顶部添加了一个解释。干杯:)我看到了一些使用下面答案的例子,但是,我现在正在运行5.4.7,这非常适合我的需要,谢谢!@Martijn,AmalMurali:DateInterval和DatePeriod类是在PHP5.3.0中引入的;不知道从哪里发现它只在>=5.4.0上工作的?这段代码可以修改,这样它就可以在PHP5.2.0上运行,比如@Glav伊奇:噢,我已经更新了答案。谢谢:)