Комментарии 10
«Тайный день», 32-й, Только в IЕ ))
0
IE 8.0.6001.18702 (полный юзер-агент) — не подтвердилось. Всё кажет правильно.
0
Високосный год?
-4
опять перевод часов +-1 час и особенности округления? :)
+1
В России переход на летнее время осуществляется в последнее воскресенье марта (в 2009 году — 29 марта, 2010 — 28 марта). В этот день, в два часа ночи стрелки переводятся на час вперёд. Переход на «зимнее время» осуществляется в последнее воскресенье октября (в 2009 году — 25 октября, в 2010 — 31 октября). Из-за этого октябрь является самым длинным месяцем года.
-1
IE 8.0.7600.16385 — всё работает правильно.
У вас с настройками часового пояса что-то не то.
У вас с настройками часового пояса что-то не то.
0
Часовый пояс — (UTC+03:00) Волгоград, Москва, Санкт-Петербург
Windows 7.
Windows 7.
0
Вы не указали, в какой час проводилось тестирование, а оно участвует в (new Date()). Поэтому пример представлен некорректно. Если тестирование было между 2 и 3 часами ночи, то где-то была выявлена разница в способе расчёта. Воспользуйтесь для выявления истины выражением
alert( (( (new Date('1 Nov 2010, 2:01')) — (new Date('31 Oct 2010, 1:59')) )/86400000*24) )
Оно показывает разницу в часах. Здесь — 25 часов и 2 минуты (по FF 3.6). А здесь
alert( (( (new Date('1 Nov 2010, 2:01')) — (new Date('31 Oct 2010, 2:01')) )/86400000*24) )
— 24 часа. В IE6 у меня то же самое, а на других компьютерах может различаться в зависимости от установленных обновлений в IE (когда меняются законы о порядке ввода летнего времени в разных странах, это прописывается в обновлениях; не прописано — будет что-то по-старому).
alert( (( (new Date('1 Nov 2010, 2:01')) — (new Date('31 Oct 2010, 1:59')) )/86400000*24) )
Оно показывает разницу в часах. Здесь — 25 часов и 2 минуты (по FF 3.6). А здесь
alert( (( (new Date('1 Nov 2010, 2:01')) — (new Date('31 Oct 2010, 2:01')) )/86400000*24) )
— 24 часа. В IE6 у меня то же самое, а на других компьютерах может различаться в зависимости от установленных обновлений в IE (когда меняются законы о порядке ввода летнего времени в разных странах, это прописывается в обновлениях; не прописано — будет что-то по-старому).
+1
В общем, чтобы обойти эту ошибку (не браузера, а программиста), надо брать дату за «сегодня» в 0 часов, в 12 часов, но никак не между 2 и 3, а для некоторых стран, возможно, есть другой час ввода летнего времени.
Другими словами, писать не now = new Date();, а
now = new Date();
now=new Date(now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate());
Другими словами, писать не now = new Date();, а
now = new Date();
now=new Date(now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate());
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Глюк IE с расчетом разницы дат, Javascript