Javascript setdate getDate()+ 28返回错误

时间:2017-02-15 10:46:16

标签: javascript

在尝试将日期添加到日期值时,我得到了一个奇怪的输出。

var startdate = $("#JobStartDate").val();

startdate = new Date(startdate);
startdate28 = startdate.setDate(startdate.getDate()+28);

console.log(startdate);
console.log(startdate28);

结果

startdate = "Date 2017-03-15T00:00:00.000Z"

startdate28 = 1489536000000

我出错的任何想法?

6 个答案:

答案 0 :(得分:1)

像这样:

var startdate = $("#JobStartDate").val();

startdate = new Date(startdate);
startdate28 = new Date();
startdate28.setDate(startdate.getDate()+28);

console.log(startdate);
console.log(startdate28);

答案 1 :(得分:0)

查看以下代码段:

var startdate = "2017-02-15";

startdate = new Date(startdate);
startdate28 = new Date();
startdate28.setTime(startdate.getTime() + 28 * 86400000);

console.log(startdate);
console.log(startdate28);

请注意,您需要我们setTime setDate的内容,因为当月份或年份与添加日期之前的月份或年份不同时,可能会导致错误。

结果将是:

  

“2017-02-15T00:00:00.000Z”。

     

“2017-03-15T00:00:00.000Z”

答案 2 :(得分:0)

这一行:startdate28 = startdate.setDate(startdate.getDate()+ 28); 您存储“startdate28”中“startdate.setDate”返回的内容,此函数返回调整日期的时间戳。

您可以做的是为另一个日期创建一个新的日期对象:

var startdate = '2016-01-01';

startdate = new Date(startdate);
startdate28 = new Date(startdate.setDate(startdate.getDate()+28));

console.log(startdate);
console.log(startdate28);

答案 3 :(得分:0)

方法Date.getDate()产生一个整数。因此,整数+ 28仍然是整数而不是日期类型。尝试:

var startdate;
startdate = new Date("2017-03-15T00:00:00.000Z"); 
startdate28 = new Date();
startdate28.setDate(startdate.getDate()+28);
console.log(startdate); 
console.log(startdate28);

答案 4 :(得分:0)

你去:

addDays = function(days) {
    var startdate = new Date(this.valueOf());
    startdate.setDate(startdate.getDate() + days);
    return startdate;
}

var startdate= new Date();

alert(dat.addDays(5))

答案 5 :(得分:0)

我遇到了同样的问题,找到的解决方案如下:

var startdate = "2017-02-15";
startdate = new Date(startdate);
startdate28 = new Date(startdate.setDate(startdate.getDate()+28));