Новая таймзона — новые проблемы
Вернувшись из короткого отпуска, обнаружил, что админ установил новую таймзону RTZ 2. В результате некоторые браузеры стали несколько странно работать с датами. Вот, например, как выглядит декабрь 2013 года в календаре jquery ui (достаточно старая версия):
То, что следует обновляться, сомнений не вызывает, но это корпоративная среда, и не все так просто.Полез смотреть, что происходит, и увидел странные вещи. Начал с простейшего
var date = new Date (2014,0,1) В IE8 это вовсе не 1 января, как можно было бы подумать, а 31 декабря 2013! (проверьте в более старших версиях).Но скриншот, показанный выше, снят в хроме, где указанный конструктор отработал нормально. Если порыться в исходниках, то причина указанной картинки — неправильное определение количества дней в месяце. Приведенный ниже код для декабря в хроме и IE возвращает 1! return 32 — new Date (year, month, 32).getDate (); Пока заменил на такое, вроде, работает: return new Date (year, month+1, 0).getDate (); Также неправильно работают сеттеры. Например, и в хроме, и в IE указанный код дает удивительные результаты: var date = new Date (2014,0,2); date.setDate (1); В опере и файрфоксе неприятностей пока не обнаружил. Кроме того, в последней версии jquery ui декабрь 2013 отображается нормально. Тем не менее, теперь придется проверять скрипты на предмет наличия 1 января 2014.Как вы боретесь с этой проблемой?