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で他の方法を提案してください