Javascript日期对象(新对象与SetUTCDate)由于夏令时而导致的getTime差异

Javascript日期对象(新对象与SetUTCDate)由于夏令时而导致的getTime差异,javascript,date,Javascript,Date,我有一个while循环来选择日期单元格,由于夏令时即将到来,这个循环现在正在中断,我想知道是否有更好的方法来修复它。。(我的计划在代码下面) 函数doLoop(startDateObj、endDateObj){ 日志(“开始:+startDateObj”) console.log(“end:+endDateObj) console.log(“----”) var counterDateObj=新日期(startDateObj); while(true){ if(counterDateObj.ge

我有一个while循环来选择日期单元格,由于夏令时即将到来,这个循环现在正在中断,我想知道是否有更好的方法来修复它。。(我的计划在代码下面)

函数doLoop(startDateObj、endDateObj){
日志(“开始:+startDateObj”)
console.log(“end:+endDateObj)
console.log(“----”)
var counterDateObj=新日期(startDateObj);
while(true){
if(counterDateObj.getTime()>endDateObj.getTime()){
//命中!在结束日期后到达
console.log(“=>hit”);
控制台日志(“计数器:+counterDateObj)
log(“getTime():”+counterDateObj.getTime()+“>”+endDateObj.getTime())
打破
};
控制台日志(counterDateObj);
counterDateObj.setUTCDate(counterDateObj.getUTCDate()+1);
};
};
在夏令时之前和之后设置值会使整个过程变得混乱:

doLoop(new Date('03/07/09'), new Date('03/10/09'));

VM2826:2  start: Sat Mar 07 2009 00:00:00 GMT-0500 (Eastern Standard Time)
VM2826:3  end: Tue Mar 10 2009 00:00:00 GMT-0400 (Eastern Daylight Time)
VM2826:4  -----
VM2826:18 Sat Mar 07 2009 00:00:00 GMT-0500 (Eastern Standard Time)
VM2826:18 Sun Mar 08 2009 00:00:00 GMT-0500 (Eastern Standard Time)
VM2826:18 Mon Mar 09 2009 01:00:00 GMT-0400 (Eastern Daylight Time)
VM2826:11 => hit
VM2826:12 counter: Tue Mar 10 2009 01:00:00 GMT-0400 (Eastern Daylight Time)
VM2826:13 getTime(): 1236661200000 > 1236657600000
我目前的计划是:如果它大于endDate时间戳+5个额外的小时(以毫秒为单位),或者类似的


有人能想出更好的办法吗?我的计划看起来很不错-不太好

想象一下,它没有说2009年,而是2020年。你能总结一下你需要什么吗?只要能让循环正常工作就行了吗_(ツ)_/’基本上,它不应该在10日而应该在11日中断。有没有更好的方法来添加一个不将时间移到01:00:00的日期?有没有更好的if语句(除了getTime()之外)来检查是否是第二天?您混合了本地和UTC日期值,不要在
counterDateObj.setUTCDate(counterDateObj.getUTCDate()中使用UTC方法+1)
*就是这样!太蠢了..我发誓我把它改为UTC是为了处理其他一些边缘案例,但是w/e.我很感激!(: