Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何递增DateTime对象以查找下一个星期二?_Php_Datetime - Fatal编程技术网

Php 如何递增DateTime对象以查找下一个星期二?

Php 如何递增DateTime对象以查找下一个星期二?,php,datetime,Php,Datetime,我正在尝试使用DateTime类查找一些日期。我使用DateTime::modify order来查找下一个星期二,它很有效。但是,如果我下周二再找时间,我总是得到同样的日期。我做错了什么 代码如下: $date = DateTime::createFromFormat('Y-m-d', '2015-04-01'); echo $date->format('d/m/Y') . "\n"; for ($n = 0; $n < 10; $n++) { $date = $date-&

我正在尝试使用DateTime类查找一些日期。我使用DateTime::modify order来查找下一个星期二,它很有效。但是,如果我下周二再找时间,我总是得到同样的日期。我做错了什么

代码如下:

$date = DateTime::createFromFormat('Y-m-d', '2015-04-01');
echo $date->format('d/m/Y') . "\n";

for ($n = 0; $n < 10; $n++) {
  $date = $date->modify("first Tuesday of +1 week");
  echo $date->format('d/m/Y') . "\n";
}
只需使用“下周二”而不使用+1周:

$date = DateTime::createFromFormat('Y-m-d', '2015-04-01');
echo $date->format('d/m/Y') . "\n";

for ($n = 0; $n < 10; $n++) {
  $date->modify("next Tuesday");
  echo $date->format('d/m/Y') . "\n";
}

顺便说一句,您不需要将
modify()
的结果赋给变量,因为它实际上修改了对象,而不是返回修改的日期。

请尝试动态传递周数

 $date = DateTime::createFromFormat('Y-m-d', '2015-04-01');
    echo $date->format('d/m/Y') . "\n";

    for ($n = 0; $n < 10; $n++) {
      $date = $date->modify("first Tuesday of +".$n." week");
      echo $date->format('d/m/Y') . "\n";
    }
$date=DateTime::createFromFormat('Y-m-d','2015-04-01');
echo$date->格式('d/m/Y')。“\n”;
对于($n=0;$n<10;$n++){
$date=$date->modify(“第一个星期二+”、$n.“一周”);
echo$date->format('d/m/Y')。“\n”;
}

谢谢,这个例子也适用,但我正在使用的实际代码不适用。它是一个函数,有时会被调用,每次都应该在下周二(或需要的一天)返回。
01/04/2015
07/04/2015
14/04/2015
21/04/2015
28/04/2015
05/05/2015
12/05/2015
19/05/2015
26/05/2015
02/06/2015
09/06/2015
 $date = DateTime::createFromFormat('Y-m-d', '2015-04-01');
    echo $date->format('d/m/Y') . "\n";

    for ($n = 0; $n < 10; $n++) {
      $date = $date->modify("first Tuesday of +".$n." week");
      echo $date->format('d/m/Y') . "\n";
    }