概述
PHP 的日期操作函數允許添加月份,但有時會導致後續幾個月的超支。當目標月份中不存在的日期新增月份時,例如在 2 月 29 日新增月份,就會出現此問題。
建議的解決方案:自訂日期新增功能
為了解決這個問題,我們可以建立一個自訂函數,在日期中加入月份,同時確保它不會超過結果月份的最後一天。
實作:
<code class="php">function add($date_str, $months) { $date = new DateTime($date_str); // Extract the day of the month as $start_day $start_day = $date->format('j'); // Add 1 month to the given date $date->modify("+{$months} month"); // Extract the day of the month again so we can compare $end_day = $date->format('j'); if ($start_day != $end_day) { // The day of the month isn't the same anymore, so we correct the date $date->modify('last day of last month'); } return $date; }</code>
說明:
範例:
<code class="php">$result = add('2011-01-28', 1); // 2011-02-28 $result = add('2011-01-31', 3); // 2011-04-30 $result = add('2011-01-30', 13); // 2012-02-29 $result = add('2011-10-31', 1); // 2011-11-30 $result = add('2011-12-30', 1); // 2011-02-28</code>
以上是在 PHP 中加入月份時如何防止日期溢出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!