在javascript中添加一天到目前为止

时间:2014-06-19 17:01:00

标签: javascript date

我确信很多人都会问这个问题,但当我检查答案时,在我看来,我找到的是错误的

var startDate = new Date(Date.parse(startdate));
//The start date is right lets say it is 'Mon Jun 30 2014 00:00:00'

var endDate = new Date(startDate.getDate() + 1);
// the enddate in the console will be 'Wed Dec 31 1969 18:00:00' and that's wrong it should be  1 july 

我知道.getDate()从1-31返回但是浏览器或javascript只增加了一天没有更新月份和年份吗?

在这种情况下,我应该编写一个算法来处理这个问题吗?或者还有另一种方式?

8 个答案:

答案 0 :(得分:48)

请注意,Date.getDate仅返回该月的某一天。您可以通过拨打Date.setDate并附加1来添加一天。

// Create new Date instance
var date = new Date()

// Add a day
date.setDate(date.getDate() + 1)

JavaScript会自动为您更新月份和年份。

修改
这是指向页面的链接,您可以在其中找到有关内置Date对象的所有精彩内容,并查看可能的内容:Date

答案 1 :(得分:12)

带有单个数字的Date构造函数预计自 1969年12月31日以来的毫秒数。

Date.getDate()返回当前日期对象的日期索引。在您的示例中,日期为30。最终表达式为31,因此它在 1969年12月31日之后返回31毫秒。

使用现有方法的简单解决方案是使用Date.getTime()代替。然后,添加一天毫秒而不是1

例如,

var dateString = 'Mon Jun 30 2014 00:00:00';

var startDate = new Date(dateString);

// seconds * minutes * hours * milliseconds = 1 day 
var day = 60 * 60 * 24 * 1000;

var endDate = new Date(startDate.getTime() + day);

<强> JSFiddle

请注意,此解决方案无法处理与夏令时,闰年等相关的边缘情况。相反,使用像moment.js这样的成熟开源库来处理所有内容时,它总是一种更具成本效益的方法。

答案 2 :(得分:1)

我认为你在寻找的是:

startDate.setDate(startDate.getDate() + 1);

另外,您可以查看Moment.js

  

用于解析,验证,操作和格式化日期的javascript日期库。

答案 3 :(得分:1)

2月31日和28日有问题getDate()我使用此功能getTime24*60*60*1000 = 86400000

var dateWith31 = new Date("2017-08-31");
var dateWith29 = new Date("2016-02-29");

var amountToIncreaseWith = 1; //Edit this number to required input

console.log(incrementDate(dateWith31,amountToIncreaseWith));
console.log(incrementDate(dateWith29,amountToIncreaseWith));

function incrementDate(dateInput,increment) {
        var dateFormatTotime = new Date(dateInput);
        var increasedDate = new Date(dateFormatTotime.getTime() +(increment *86400000));
        return increasedDate;
    }

答案 4 :(得分:1)

var datatoday = new Date();
var datatodays = datatoday.setDate(new Date(datatoday).getDate() + 1);
todate = new Date(datatodays);
console.log(todate);

这会对你有帮助......

答案 5 :(得分:0)

如果你不介意使用图书馆,DateJS(https://github.com/abritinthebay/datejs/)会让这很容易。然而,使用vanilla JavaScript的答案之一可能会更好,除非您将利用其他一些DateJS功能,例如解析异常格式的日期。

如果您正在使用DateJS,那么这样的一行应该可以解决问题:

Date.parse(startdate).add(1).days();

您也可以使用具有相似功能的MomentJS(http://momentjs.com/),但我并不熟悉它。

答案 6 :(得分:0)

使用此我觉得它对你有用

var endDate=startDate.setDate(startDate.getDate() + 1);

答案 7 :(得分:0)

只是为了向Date原型添加函数:

以可变的方式/风格:

Date.prototype.addDays = function(n) {
   this.setDate(this.getDate() + n);
};

// Can call it tomorrow if you want
Date.prototype.nextDay = function() {
   this.addDays(1);
};

Date.prototype.addMonths = function(n) {
   this.setMonth(this.getMonth() + n);
};

Date.prototype.addYears = function(n) {
   this.setFullYear(this.getFullYear() + n);
}

// etc...

var currentDate = new Date();
currentDate.nextDay();