我有这个问题,我需要输出特定日期,并且只会增加月份和年份。这是样本问题
如果今天(2017-12-08 Y-m-D格式)小于该月的第15天,那么输出必须
| DATE |
| 2017-12-15 |
| 2017-12-30 |
| 2018-01-15 |
| 2018-01-30 |
| 2018-02-15 |
| 2018-02-28 |
其中固定日仅为15日和30日,除2月28日外没有其他日期。增量值仅为月份和年份。关于2月,它只会到达当月的最后一天(如果发生闰年,则为28或29)。
抱歉这个令人困惑的问题,希望有人可以提供帮助。谢谢。
答案 0 :(得分:0)
for ($i = 0; $i < $whatever; $i++) {
$fifteenth = mktime(0, 0, 0, 12 + $i, 15, 2017 + floor($i / 12));
echo date('Y-m-d', $fifteenth), PHP_EOL;
echo date('Y-m-', $fifteenth), min(date('t', $fifteenth), 30), PHP_EOL;
}
循环条件中的$whatever
是您要打印多少个月
12
来电中的2017
和mktime
是您的起始月份和年份。
这会直接创建一个月15日的时间戳(而不是相对于上一个日期增加1个月,这很容易出错),使用mktime
溢出日期计算(12 + 5 = 17 = 5月;请注意,这是一个明确支持的功能)。然后,它会使用date('t')
获取该月的最后一天,并使用简单的30
函数将其限制为min
的最大值。