2017-03-08 119 views
0

我有这个问题,我需要输出特定的一天,并且只会增加月份和年份。这是样品问题在PHP日期设置修复日期和增加月份/年()

如果今天一天(2017年12月8日YMD格式)小于一个月的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

你将不得不澄清你的确切规则多一点。它总是应该是第15和第30?本月15日和最后一天但不超过30日?或者可以有所不同?也许是16日和31日?你有没有尝试过没有用的东西? – deceze

+0

仅限第15天和第30天。在二月份只有28天的情况下,它会在二月的最后一天(第28天)。我一直在尝试一些代码,但没有任何工作。 –

+0

你输出的逻辑是什么,你的问题是什么?你不知道如何检查日期是月份的15日还是月份的最后一天,或者是否有不同的问题? –

回答

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是事先你要多少个月来打印。
122017mktime呼叫是你的开始月份和年份。

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

相关问题