我的问题是:
我想通过一个数组,其中包含数字。 对于每个号码,我想将此号码添加为某个天数 日期:
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
答案 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];