Php 在循环中给给定日期加上3个月

Php 在循环中给给定日期加上3个月,php,Php,嗨,我有以下日期=2015-06-01 00:00:00 所以我必须在这个日期加上3个月,所以写下面的代码 $sarting="2015-06-01 00:00:00"; $date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") ); And i get the output = 2015-09-01; $store_date=array(); for($i=0;$i<20;$i++){ $store_d

嗨,我有以下日期=2015-06-01 00:00:00 所以我必须在这个日期加上3个月,所以写下面的代码

 $sarting="2015-06-01 00:00:00";
  $date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
  And i get the output = 2015-09-01;
 $store_date=array();
  for($i=0;$i<20;$i++){
     $store_date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
  }
但现在我想一次又一次地添加3个月,每次添加20次,并且我必须将输出存储到数组中

因此,我编写以下代码

 $sarting="2015-06-01 00:00:00";
  $date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
  And i get the output = 2015-09-01;
 $store_date=array();
  for($i=0;$i<20;$i++){
     $store_date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
  }
但它返回2015-09-01 20次。我需要像这样的2015-09-01、2015-12-012016-06-01等等


请检查

您没有更改$sarting的值。试试这个:

$sarting = "2015-06-01 00:00:00";
$store_date = array();
for ($i = 0; $i < 20; $i++) {
    $sarting = $store_date[$i] = date('Y-m-d', strtotime($sarting . "+3 months"));
}

您没有更改$sarting的值。试试这个:

$sarting = "2015-06-01 00:00:00";
$store_date = array();
for ($i = 0; $i < 20; $i++) {
    $sarting = $store_date[$i] = date('Y-m-d', strtotime($sarting . "+3 months"));
}

如果有帮助,试试这个检查

$sarting="2015-06-01 00:00:00";

$store_date=array();
  for($i=0;$i<20;$i++){
     $store_date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
     $sarting=$store_date[$i];
  }

 echo "<pre>";
 print_r($store_date);
 echo "</pre>";

如果有帮助,试试这个检查

$sarting="2015-06-01 00:00:00";

$store_date=array();
  for($i=0;$i<20;$i++){
     $store_date[$i]=date('Y-m-d', strtotime($sarting . "+3 months") );
     $sarting=$store_date[$i];
  }

 echo "<pre>";
 print_r($store_date);
 echo "</pre>";

我建议使用-类,这样我们就可以在每次迭代中重用相同的实例

<?php
$dateStamp = "2015-06-01 00:00:00";
$date = new DateTime($dateStamp);
$datesArr = [];
for ($i=1; $i<21 ; $i++) {
 $date->modify('+3 month');
 $datesArr[] = $date->format('Y-m-d h:i:s');
}
echo '<pre>';
print_r($datesArr);
echo '</pre>';
因为我们正在恢复同一个对象,所以每次迭代都会增加3个月。不需要任何计算或任何东西,使代码干净易读


演示:

我建议使用-class,这样我们可以在每次迭代中重用相同的实例

<?php
$dateStamp = "2015-06-01 00:00:00";
$date = new DateTime($dateStamp);
$datesArr = [];
for ($i=1; $i<21 ; $i++) {
 $date->modify('+3 month');
 $datesArr[] = $date->format('Y-m-d h:i:s');
}
echo '<pre>';
print_r($datesArr);
echo '</pre>';
因为我们正在恢复同一个对象,所以每次迭代都会增加3个月。不需要任何计算或任何东西,使代码干净易读

演示:

您可以使用PHP的class'modify方法在循环中添加+3个月

Array
(
    [0] => 2015-09-01 12:00:00
    [1] => 2015-12-01 12:00:00
    [2] => 2016-03-01 12:00:00
    [3] => 2016-06-01 12:00:00
    [4] => 2016-09-01 12:00:00
    [5] => 2016-12-01 12:00:00
    [6] => 2017-03-01 12:00:00
    [7] => 2017-06-01 12:00:00
    [8] => 2017-09-01 12:00:00
    [9] => 2017-12-01 12:00:00
    [10] => 2018-03-01 12:00:00
    [11] => 2018-06-01 12:00:00
    [12] => 2018-09-01 12:00:00
    [13] => 2018-12-01 12:00:00
    [14] => 2019-03-01 12:00:00
    [15] => 2019-06-01 12:00:00
    [16] => 2019-09-01 12:00:00
    [17] => 2019-12-01 12:00:00
    [18] => 2020-03-01 12:00:00
    [19] => 2020-06-01 12:00:00
)
您可以使用PHP类的modify方法在循环中添加+3个月

Array
(
    [0] => 2015-09-01 12:00:00
    [1] => 2015-12-01 12:00:00
    [2] => 2016-03-01 12:00:00
    [3] => 2016-06-01 12:00:00
    [4] => 2016-09-01 12:00:00
    [5] => 2016-12-01 12:00:00
    [6] => 2017-03-01 12:00:00
    [7] => 2017-06-01 12:00:00
    [8] => 2017-09-01 12:00:00
    [9] => 2017-12-01 12:00:00
    [10] => 2018-03-01 12:00:00
    [11] => 2018-06-01 12:00:00
    [12] => 2018-09-01 12:00:00
    [13] => 2018-12-01 12:00:00
    [14] => 2019-03-01 12:00:00
    [15] => 2019-06-01 12:00:00
    [16] => 2019-09-01 12:00:00
    [17] => 2019-12-01 12:00:00
    [18] => 2020-03-01 12:00:00
    [19] => 2020-06-01 12:00:00
)

以下代码用于从日期开始的年/月/日的加减

加法=日期'Y-m-d',标准时间+0年+3个月+0天,标准时间$lastdate

减法=日期'Y-m-d',标准时间+0年-3个月+0天,标准时间$lastdate


以下代码用于从日期开始的年/月/日的加减

加法=日期'Y-m-d',标准时间+0年+3个月+0天,标准时间$lastdate

减法=日期'Y-m-d',标准时间+0年-3个月+0天,标准时间$lastdate


为什么不使用碳?“但它会返回2015-09-01 20次”-当然会,因为在每个循环迭代中,在相同的开始日期上增加3个月。您要么需要修改$sarting,要么只需将+3部分动态化,如3*$i+1或类似的部分。是的。我忘了。这是真的为什么不使用碳?“但它会返回2015-09-01 20次”-当然会,因为在每个循环迭代中,在相同的开始日期上增加3个月。您要么需要修改$sarting,要么只需将+3部分动态化,如3*$i+1或类似的部分。是的。我忘了。这是真的,你能告诉我如何从这个3个月的$datesArr中得到6个月的数组吗?你的意思是说应该是6个月而不是3个月?是的。但是从生成的$datesArr可以告诉我如何从这个3个月的$datesArr中得到6个月的数组。你的意思是说它应该是6个月而不是3个月?是的。但是从生成的$datesArr@abilasher-那个问题对SO来说是离题的。@abilasher-那个问题对SO来说是离题的。