有人可以解释为什么这是在jQuery UI Datepicker中?

dis*_*cer 5 jquery date datepicker

这个方法在jQuery ui datepicker的第1380行:

_daylightSavingAdjust: function(date) {
    if (!date) {
      return null;
    }
    date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
    return date;
}
Run Code Online (Sandbox Code Playgroud)

它在datepicker代码中的许多地方使用.据我所知,这个代码只会增加2小时到任何小时> 12的日期,否则将小时数设置为0.

我在我的控制台中试了一下:

date = new Date();
console.log("" + date);
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
console.log("" + date);
Run Code Online (Sandbox Code Playgroud)

我得到了:

Tue Dec 06 2011 18:36:06 GMT+0100 (CET)
Tue Dec 06 2011 20:36:06 GMT+0100 (CET)
Run Code Online (Sandbox Code Playgroud)

小智 5

评论确实有点神秘:

/* 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 */
Run Code Online (Sandbox Code Playgroud)

Datepicker从所选日期开始在内部创建日期对象,而不指定时间 - 因此使用午夜.在某些地方,DST在午夜开始播放,将时间推回到前一天的晚上11点.

因此,此函数查看Date对象的小时,以确定是否必须将时间推进两小时才能获得正确的日期.