在PHP date()中设置修正日和增量月/年

时间:2017-03-08 14:00:18

标签: php

我有这个问题,我需要输出特定日期,并且只会增加月份和年份。这是样本问题

如果今天(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)。

抱歉这个令人困惑的问题,希望有人可以提供帮助。谢谢。

1 个答案:

答案 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来电中的2017mktime是您的起始月份和年份。

这会直接创建一个月15日的时间戳(而不是相对于上一个日期增加1个月,这很容易出错),使用mktime溢出日期计算(12 + 5 = 17 = 5月;请注意,这是一个明确支持的功能)。然后,它会使用date('t')获取该月的最后一天,并使用简单的30函数将其限制为min的最大值。