在此線程中,開發人員尋求幫助以向用戶提供的結束日期添加兩個月。
為了實現這一點,建議使用名為 addMonths() 的自訂函數:
<code class="js">function addMonths(dateObj, num) { return dateObj.setMonth(dateObj.getMonth() + num); }</code>
但是,這種簡單的方法面臨著限制。例如,在 7 月 31 日加上一個月,結果就是 10 月 1 日而不是 9 月 30 日。為了解決這個問題,可以使用更細緻的函數:
<code class="js">function addMonths(dateObj, num) { var currentMonth = dateObj.getMonth() + dateObj.getFullYear() * 12; dateObj.setMonth(dateObj.getMonth() + num); var diff = dateObj.getMonth() + dateObj.getFullYear() * 12 - currentMonth; if (diff != num) { dateObj.setDate(0); } return dateObj; }</code>
如果修改的月份不正確,該函數會通過將日期重置為上個月的最後一天來維護月末規則.
作為更簡單的替代方案,可以使用具有簡化的月份滾動檢查的函數:
<code class="js">function addMonths(date, months) { var d = date.getDate(); date.setMonth(date.getMonth() + +months); if (date.getDate() != d) { date.setDate(0); } return date; }</code>
此方法還確保在保留月末行為的同時提供簡化的實現。
以上是如何在 JavaScript 中準確新增月份到日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!