2
function(startDate, lastDate){


var midDate = newDate(startDate.getFullYear(),startDate.getMonth(),Math.ceil((lastDate.getDate() + startDate.getDate()) / 2));

var startDateOffset = startDate.getTimezoneOffset();
var lastDateOffset = lastDate.getTimezoneOffset();
var midDateOffset = midDate.getTimezoneOffset();

var finalDate = new Date();
if(startDateOffset == midDateOffset){

  if((lastDate.getDate() - midDate.getDate()) > 1){
    alert("loop");
  finalDate = this.getDaylightChangeDate(midDate, lastDate); 
  }
 }

我的开始日期是 10 月 20 日,结束日期是 22 日,中间日期是 10 月 20 日。这仅发生在 Brasilia 位置,startDateOffset 和 midDateOffset 也是 180 作为输出..这将代码抛出无限循环,因为中间日期始终等于开始日期。请在javascript中建议一些其他方法来计算中间日期

4

1 回答 1

0

您的代码没有任何问题。2012-10-20T00:00 和 2012-10-21T23:00 之间的中间日期2012-10-20T23:30。当然,如果输入日期相隔不超过 2 天,您的代码不能指望日期会有所不同。如果您在与开始和结束相同的日期通过,甚至会发生什么?

如果这些日期记录在不同的时区,则应始终使用 UTC 来计算差异。

于 2012-11-01T14:02:45.417 回答