簡體   English   中英

給定單位(小時,天,月,年)和數量的JavaScript日期如何增加?

[英]How to increment a JavaScript date given a unit (hours, days, months, years), and an amount?

給定日期,單位(天,月,年-十六進制-甚至秒)和數量,以最干凈/最簡單的方式增加JavaScript日期的最佳方法是什么? (最好不使用庫)

var dateIncrementUnit = "d";
var dateIncrementAmount = 1;
var myDate = new Date();

var newDate = ? // myDate + 1d

此功能將日期單位設置為其自身+增量。

 function iD(date, increment, unit) { var units = { s: [date.getSeconds(), "setSeconds"], m: [date.getMinutes(), "setMinutes"], h: [date.getHours(), "setHours"], d: [date.getDate(), "setDate"], M: [date.getMonth(), "setMonth"], y: [date.getFullYear(), "setFullYear"] } date[units[unit][1]](units[unit][0] + increment); return date; } console.log(iD(new Date(), 2, "M") + ""); console.log(iD(new Date(), 3, "y") + ""); console.log(iD(new Date(), 30, "m") + "") 

您可以使用以下功能:

 function addToDate(dt, unit, num) { const p = { s: dt.getSeconds(), m: dt.getMinutes(), h: dt.getHours(), d: dt.getDate(), M: dt.getMonth(), y: dt.getFullYear() }; p[unit] += num; dt = new Date(py, pM, pd, ph, pm, ps); // Overshooting the end of the month? Return last day of that month if ("My".includes(unit) && dt.getMonth() !== pM % 12) dt.setDate(0); return dt; } // Example call: add 1 month to today console.log(addToDate(new Date(), "M", 1).toString()); 

if存在if條件,則要在1月31日前增加1個月(例如2月31日),但是將其默默轉換為3月3日,這是一個奇怪的結果。 if塊可確保返回目標月份的最后一天。 因此,在此示例情況下,2月28日(或29日)。

同樣,如果在2月29日(a年)加上1年,則將給出3月1日,而2月28日可能是預期的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM