此方法位于 line 1380 in the jQuery ui datepicker :
_daylightSavingAdjust: function(date) {
if (!date) {
return null;
}
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
return date;
}
它在日期选择器代码中的许多地方使用。据我所知,这段代码只会向任何时间 > 12 的日期添加 2 小时,否则将时间设置为 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)
最佳答案
这个评论确实有点神秘:
/* Handle switch to/from daylight saving.
Hours may be non-zero on daylight saving cut-over:
> 12 when midnight changeover, but then cannot generate
midnight datetime, so jump to 1AM, otherwise reset.
@param date (Date) the date to check
@return (Date) the corrected date */
日期选择器根据所选日期在内部创建日期对象,而不指定时间 - 因此使用午夜。在某些地区,夏令时在午夜开始,这会将时间拨回到前一天的晚上 11 点。
因此,该函数查看 Date 对象的小时,以确定是否必须将时间向前推进两个小时才能获得正确的日期。
关于jquery - 有人可以解释为什么在 jQuery UI Datepicker 中会出现这样的情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404216/