如何在 JavaScript 中為當前日期新增天數
本教程將介紹如何在 JavaScript 中為當前日期或自定義日期新增新的一天。首先介紹什麼是 日期
以及 JavaScript “日期 “類中的不同方法。
瞭解 JavaScript Date
類
在 JavaScript 中,Date
類基本上是指從 1970 年 1 月 1 日午夜 UTC 開始過去的毫秒數。它與 UNIX epoch 不同,後者在計算機中用於記錄日期和時間值。
要開始使用 Date
類,我們需要建立一個新的 Date
物件來處理,建立這個物件的方法有很多,我們可以在下面的例子中看到。
var myDate = new Date();
var myDateOne = new Date('August 19, 2020 23:15:30');
var myDateTwo = new Date('2020-08-17T03:24:00');
var myDateThree = new Date(2020, 07, 17);
var myDateFour = new Date(2020, 07, 17, 3, 24, 0);
console.log(myDate);
console.log(myDateOne);
console.log(myDateTwo);
console.log(myDateThree);
console.log(myDateFour);
當我們在不給任何引數的情況下呼叫 Date()
建構函式時,Date
物件將擁有當前的日期和時間;而當給定一個引數時,該物件將擁有代表該時間點的解析字串。
如果我們像例子 new Date(2020, 07, 17)
那樣給出適當的日期和時間成分值,索引應該從 0 開始,而不是 1。
輸出:
Fri Nov 13 2020 19:16:58 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 23:15:30 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
我們經常使用 Data
類的許多方法,我們將在下一節解釋其中的一些方法。
在 JavaScript 中給 Date()
新增天數
假設我們想在 JavaScript 中建立一個增加一定天數的函式。在這種情況下,我們可以使用 Date
類中名為 getDate()
的方法來實現,該方法根據當地時間返回所選日期的 1 到 31 之間的月份日期,並使用 setDate()
方法來設定該特定日期的月份日期。
例如,如果日期是 11/02/2020
,增加一天就是 12/02/2020
。如果是 31/03/2020
,則應是 01/04/2020
,因為唯一有效的範圍是 [1, 31]
。
讓我們看看下面的例子,在 Date
物件中新增天數。
function addDaysToDate(date, days) {
var res = new Date(date);
res.setDate(res.getDate() + days);
return res;
}
var tmpDate = new Date(2020, 07, 20); // Augest 20, 2020
console.log(addDaysToDate(tmpDate, 2));
輸出:
Sat Aug 22 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
如果我們有興趣將這一天新增到今天,我們可以在上面的程式碼中用 new Date()
替換 new Date(date)
,或者我們可以直接將 new Date()
傳遞給函式。
var tmpDate = new Date(); // Today
console.log(addDaysToDate(tmpDate, 2)); // today + 2
輸出:
Sun Nov 15 2020 22:55:06 GMT+0200 (Eastern European Standard Time)
使用 JavaScript 中的 prototype
給 Date()
新增天數
如果我們想給 Date
類建立一個原型,只接受數字輸入作為新增的天數,我們可以按照下面的例子來實現。
Date.prototype.addDays =
function(noOfDays) {
var tmpDate = new Date(this.valueOf());
tmpDate.setDate(tmpDate.getDate() + noOfDays);
return tmpDate;
}
var myDate = new Date(); // today
console.log(myDate.addDays(2)); // today + 2
輸出:
Sun Nov 15 2020 22:59:06 GMT+0200 (Eastern European Standard Time)