Pull to refresh

Проблема «7-го января»

Reading time2 min
Views42K
Во время работы над одним из проектов обнаружился довольно интересный баг, который, как потом выяснилось, проявляется не только в «самописных» календарях, но и в популярных open-source библиотеках. Проблема заключается в невозможности выбрать 7 января. В некоторых календарях эта дата просто отсутствует:
image
Если выбирать 6-е число (которое стоит на месте 7-го), то выбирается… 6-е число.

Баг наблюдается (по предварительным оценкам) под Windows 8.

UPD: Природа проблемы раскрыта здесь. Все дело в RTZ2 после Microsoft Update KB2998527.

UPD2: 0xy: проблема наблюдается не только в Firefox, но и в мобильных версиях различных браузеров. Подробнее (плюс баг-фикс).

Некоторые подробности под катом.

Быстрая пробежка по интернету показала наличие данной проблемы в широком ряде календарей. В большинстве случаев 7 число показывается, но выбрать его не удается:

image

Так как практически все js-календари для вычислений используют Date, то есть вероятность того, что при определенных обстоятельствах использование последнего может привести к некоторым проблемам для пользователей именно 7 января.

Совсем недавно на хабре появлялся пост про проблемы даты и времени в JS, где в комментариях обсуждался вопрос разного поведения Date в различных браузерах. И вот, судя по всему, найден яркий пример одной из таких проблем.

Баг наблюдался в Firefox (последняя версия, Windows 8), есть свидетельства о том, что баг был обнаружен так же и под Chrome (последняя версия, Windows 8). Нам отловить его не удалось (Windows 8 в офисе отсутствует), но нарастающее недовольство некоторых клиентов (в нашем случае — гостиница) говорит о том, что проблема есть. И, кажется, это как-то связано с Windows 8. На том же самом компьютере в Internet Explorer календарь работал исправно. Есть информация, что после обновления до Windows 8.1 проблема самоустраняется. Времени до этой даты осталось совсем немного, поэтому решил предупредить о том, что кто-то может получить не клиентов 7 января, а геморр много гневных звонков. Предупрежден — значит вооружен.

Природа проблемы вероятно лежит в том, что браузер каждый по-своему реализовывает объект Date, а значит время может различаться от браузера к браузеру. Но тут баг наблюдается с привязкой к системе. Может быть кто-то из хабравчан сможет прокомментировать такое интересное поведение?
Tags:
Hubs:
+25
Comments31

Articles