在Javascript中迭代一系列日期

时间:2014-10-28 10:43:22

标签: javascript

在过去的几天里,我一直在努力寻找一系列日期。我正在使用以下代码进行测试:

var current_date = new Date("2014-08-01");
var end_date = new Date("2014-10-31");
var end_date_time = end_date.getTime();

while (current_date.getTime() <= end_date_time) {
    document.write(current_date + '<br>');
    current_date.setDate(current_date.getDate()+1);
}

对我而言,它看起来是正确的,但是存在问题。它错过了最后一天。我正在改变这个代码,使用for循环,在循环中定义新的Date以及你能想象到的所有东西。有一点保持不变。最后一天失踪!

出于好奇,我使用以下格式创建日期:

var current_date = new Date("08/01/2014");
var end_date = new Date("10/31/2014");

令我惊讶的是,它按预期工作。现在我想知道这是正常行为还是日期中的错误?

如果有人可以启发我,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

这是因为时间有变化,请检查第一天是否在格林尼治标准时间白天时间并且持续时间(格林尼治标准时间标准时间)

所以你的代码最好使用UTC

var current_date = new Date("2014-08-01");
current_date = new Date(current_date.getUTCFullYear(), current_date.getUTCMonth(), current_date.getUTCDate(),  current_date.getUTCHours(), current_date.getUTCMinutes(), current_date.getUTCSeconds());
var end_date = new Date("2014-10-31");
end_date = new Date(end_date.getUTCFullYear(), end_date.getUTCMonth(), end_date.getUTCDate(),  end_date.getUTCHours(), end_date.getUTCMinutes(), end_date.getUTCSeconds());
var end_date_time = end_date.getTime();


while (current_date <= end_date) {
    document.write(current_date + '<br>');
    current_date.setDate(current_date.getDate()+1);
}