我希望每年使用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年那样回归
答案 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-02
和2016-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";
}
?>