5
这种方法是line 1380 in the jQuery ui datepicker:有人可以解释为什么这在jQuery UI日期选择器?
_daylightSavingAdjust: function(date) {
if (!date) {
return null;
}
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
return date;
}
它在日期选择器代码中的许多地方使用。至于我可以看到这个代码将只加2个小时具有任何时间日期> 12,否则设定时间为0。
我试图在我的控制台:
date = new Date();
console.log("" + date);
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
console.log("" + date);
而且我得到了:
Tue Dec 06 2011 18:36:06 GMT+0100 (CET)
Tue Dec 06 2011 20:36:06 GMT+0100 (CET)
我猜测它做了它所做的事情,在出现问题时调整夏令时的实例。我住在哪里,夏令时只有一个小时,而不是两个? – adeneo
在您的问题中添加了实际代码行的链接。这里有一个评论,但它并没有使问题变得更清楚。看起来他们试图在某些角落案例中触发日期增加到第二天,但我并没有真正遵循逻辑。请注意,当代码<= 12时,该代码也明确将小时设置为'0'。 –
经过仔细观察,我发现该方法严格使用日期。例如,在datepicker.parseDate方法中,在将新日期传递给daylightSavingAdjust之后,会检查它是否已更改。如果确实如此,则会引发错误。 – disc0dancer