2017-03-08 124 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

相關問題