如何在 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)