列出日期之间的所有年份

时间:2016-02-02 17:34:11

标签: php

我希望每年使用PHP和Mysql数据库列出日期之间,代码如下:

<?php

$start    = new DateTime('2010-12-02');
$start->modify('first day of this month');
$end      = new DateTime('2016-05-06');
$end->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 year');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("Y") . "<br>\n";
}

?>

输出

2010
2011
2012
2013
2014
2015

错过2016年。

如何让2016年也回归?它应该像2010年那样回归

3 个答案:

答案 0 :(得分:1)

$start    = '2010-12-02';
$end      = '2016-05-06';
$getRangeYear   = range(gmdate('Y', strtotime($start)), gmdate('Y', strtotime($end)));
print_r($getRangeYear);

使用范围函数获取测距数列表,第一个参数起始范围和第二个结束范围。 http://php.net/manual/en/function.range.php

答案 1 :(得分:0)

很简单:您在2010-12-022016-05-06之间进行迭代。生成的日期为:

  • 2010-12-02 - &gt;确定
  • 2011-12-02 - &gt;确定
  • 2012-12-02 - &gt;确定
  • 2013-12-02 - &gt;确定
  • 2014-12-02 - &gt;确定
  • 2015-12-02 - &gt;确定
  • 2016-12-02 - &gt;超过2016-05-06 - 停止算法。

我不确切地知道你想做什么,但似乎你应该改变结束日期。

答案 2 :(得分:0)

<?php

    $start    = new DateTime('2010-12-02')->modify('+1 year');
    $start->modify('first day of this month');
    $end      = new DateTime('2016-05-06');
    $end->modify('first day of next month');
    $interval = DateInterval::createFromDateString('1 year');
    $period   = new DatePeriod($start, $interval, $end);

    foreach ($period as $dt) {
        echo $dt->format("Y") . "<br>\n";
    }

?>