在for循环javascript中添加日期到日期

时间:2015-02-09 14:42:57

标签: javascript date for-loop add days

我的问题是:

我想通过一个数组,其中包含数字。 对于每个号码,我想将此号码添加为某个天数 日期:

var days= ["1", "3", "4"];

$.each(days, function(key,value){

    var start = new Date(2015,01,08);

    var nextDay = new Date(start);

    console.log("start-day is:"+nextDay+ " and I should add "+value+" days");

    nextDay.setDate(start.getDate()+value);

    console.log("The next day is:"+nextDay);

});

开始日期是第8天。二月 如果值为1,则最后一个日志应为:"第二天是:星期一09.二月...." 但日志说的是像2002年4月那样,它甚至改变了时区....

如果我只运行一次,结果是正确的(2月9日)。 它只是在foor循环中不起作用。 (我是javascript的新手)

有人有想法吗? 在此先感谢来自德国的Sebi

2 个答案:

答案 0 :(得分:2)

您传入的字符串数组不是整数,因此您实际上是在日期中添加字符串。有两个选项

更好的选择

传入整数数组而不是字符串数组

var days= [1,3,4]; // This is an array of integers

$.each(days, function(key,value){

    var start = new Date(2015,01,08);

    var nextDay = new Date(start);

    console.log("start-day is:"+nextDay+ " and I should add "+value+" days");

    nextDay.setDate(start.getDate()+value);

    console.log("The next day is:"+nextDay);

});

更糟糕的选项

您可以在将数组添加到开始日期之前parseInt()数组或创建数组编号。

var days= ["1", "3", "4"]; // These are strings not integers

$.each(days, function(key,value){

    var start = new Date(2015,01,08);

    var nextDay = new Date(start);

    console.log("start-day is:"+nextDay+ " and I should add "+value+" days");

    nextDay.setDate(start.getDate()+parseInt(value)); // Strings are converted to integers here

    console.log("The next day is:"+nextDay);

});

答案 1 :(得分:1)

日期定义为字符串而非数字。如果将它们更改为数字,它应该可以工作:

var days= [1, 3, 4];