【问题标题】:Set fix day and increment month/year in PHP date()在 PHP date() 中设置修复日并增加月/年
【发布时间】:2017-03-08 14:00:17
【问题描述】:

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

如果今天(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 日外没有其他日期。递增的值仅是月份和年份。对于二月,它只会获取该月的最后一天(如果是闰年,则为 28 或 29)。

很抱歉给您带来混乱的问题,希望有人能提供帮助。谢谢。

【问题讨论】:

  • 您将不得不澄清您的确切规则。总是应该是15号和30号?每月的 15 号和最后一天,但不超过 30 号?或者这会有所不同吗?也许是 16 号和 31 号?你有没有试过没有用的方法?
  • 仅限第 15 天和第 30 天。 2月只有28天,2月的最后一天(28日)。我一直在尝试一些代码,但没有任何效果。
  • 你输出的逻辑是什么,你的问题是什么?您不知道如何检查日期是每月的 15 日还是每月的最后一天,还是有其他问题?
  • 谢谢大家。我的代码现在可以工作了,但它太长了。

标签: php


【解决方案1】:
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 是您要提前多少个月打印。
mktime 调用中的 122017 是您的起始月份和年份。

使用mktime 溢出日期计算(12 + 5 = 17 = 5 月;注意这是一个明确支持的功能)。然后,它使用date('t') 获取该月的最后一天,并使用简单的min 函数将其限制为最大30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多