2015-04-15 33 views
0

我试图获取每一年的日期或两个日期之间的任何可变间隔。我的日期示例如下。它似乎永远运行,我不能让它工作,最终不会打印任何东西。php从现在开始每两年的日期之间每隔1年获取日期

$currentDate = '2014-04-15'; 
$endDate = '2018-04-15'; 
$reminder = '+1 year'; 

$dateArray = array(); 

    while($currentDate <= $endDate){ 
     $currentDate = date('Y-m-d', strtotime($reminder, strtotime($currentDate))); 
    array_push($dateArray, $currentDate); 
    } 
    print_r($dateArray); 

回答

0

请更改

$dateArray = array_push($dateArray, $currentDate); 

array_push($dateArray, $currentDate); 

因为array_push,返回布尔和下一次,你调用这个函数,它会尝试存储字符串中的INT /布尔类型和导致错误。

+0

谢谢@Andriy是的,这是一个愚蠢的错误。我改变了它,但是它仍然没有打印出任何结果。 –

+0

尝试启用错误输出或查看日志。我在在线测试中试过了你的代码,并且它按预期工作。返回 Array([0] => 2015-04-15 [1] => 2016-04-15 [2] => 2017-04-15 [3] => 2018-04-15 [4] => 2019 -04-15) – Andriy

+0

真棒。谢谢@Andriy和所有帮助过我的人。它会出现我没有回应$ reminderP值。 –

0

您可以使用DateInterval类和DateTime :: add()方法:

$begin_date = DateTime::createFromFormat('Y-m-d', '2014-04-15'); 
    $end_date = DateTime::createFromFormat('Y-m-d', '2018-04-15'); 

    $res_array = array(); 

    while ($begin_date < $end_date) 
    { 
     $begin_date->Add(DateInterval::createFromDateString('1 year')); 
     $res_array[] = clone($begin_date); 
    } 
    echo ("<pre>"); print_r($res_array); echo ("</pre>"); 

多数民众赞成在面向对象的风格。

相关问题