嗨,我有以下date = 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;
但是现在我想一次又一次地添加3个月,共20次,我必须将输出存储到数组
所以我写了以下代码
$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-01,2016-06-01
等。
请检查
答案 0 :(得分:5)
我建议使用DateTime类,以便我们可以在每次迭代中重用相同的实例。
$sarting = "2015-06-01 00:00:00";
$store_date = [];
// Create a DateTime-object we can reuse
$date = new DateTime($sarting);
for ($i = 0; $i < 20; $i++) {
$date->modify('+3 months');
$store_date[] = $date->format('Y-m-d');
}
print_r($store_date);
由于我们要继续使用同一个对象,因此每次迭代都会增加3个月的时间。无需进行任何计算或任何其他操作,即可使代码清晰易读。
答案 1 :(得分:5)
您可以使用PHP的dateTime类的modify()
方法向其中添加+3个月的循环时间。
<?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>';
输出:
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
)
答案 2 :(得分:4)
您没有更改$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"));
}
答案 3 :(得分:2)
尝试此检查是否有帮助,
$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>";
答案 4 :(得分:0)
以下用于从日期开始的年/月/日加减代码的代码
加法= date('Y-m-d',strtotime(“ + 0年+3个月+0天”,strtotime($ lastdate)));
减法= date('Y-m-d',strtotime(“ + 0年-3个月+0天”,strtotime($ lastdate)));
$lastdate = "01-12-2015"; //actual date
$after_3_month = date('Y-m-d', strtotime("+0 years +3 months +0 days", strtotime($lastdate))); // adding 3 month on the actual date
echo $after_3_month; //3 month added with actual date