Может кто-нибудь объяснить, почему это в jQuery UI Datepicker? - PullRequest
5 голосов
/ 06 декабря 2011

Этот метод находится на строке 1380 в jQuery ui datepicker :

_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)

1 Ответ

5 голосов
/ 16 ноября 2012

Комментарий немного загадочный:

/* 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 */

Datepicker создает объекты даты внутри выбранных дат без указания времени - поэтому используется полночь. В некоторых местах в полночь наступает летнее время, которое возвращает время к 11 часам предыдущего дня.

Таким образом, эта функция смотрит на час объекта Date, чтобы определить, нужно ли продвигать время вперед на два часа, чтобы получить правильный день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...