Я решил проверить, как браузеры учитывают переход на летнее время.
В сентябре 2014 года Microsoft выпустила обновление часовых поясов для России KB 2998527.
В Линуксе для Москвы учтены переходы 28 марта 2010, 31 октября 2010, 27 марта 2011 и 26 октября 2014:
В сентябре 2014 года Microsoft выпустила обновление часовых поясов для России KB 2998527.
В Линуксе для Москвы учтены переходы 28 марта 2010, 31 октября 2010, 27 марта 2011 и 26 октября 2014:
/usr/share/zoneinfo/Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 /usr/share/zoneinfo/Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 /usr/share/zoneinfo/Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 /usr/share/zoneinfo/Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 /usr/share/zoneinfo/Europe/Moscow Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /usr/share/zoneinfo/Europe/Moscow Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 /usr/share/zoneinfo/Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 /usr/share/zoneinfo/Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800Написал скрипт, который выводит даты после перевода часов, начиная с марта 2010 года в течение 6 лет.
<!DOCTYPE html> <html> <head> <script type="text/javascript"> function f1() { var gmt = "GMT+0300"; var day = 24*60*60*1000; var date = new Date(2010, 2, 1); var ms = date.getTime(); var s = date.toString() + " " + date.toLocaleDateString(); for (var i=0; i<6*365; i++) { ms += day; date = new Date(ms); var gmt_ = date.toString().match(/GMT.\d+/).toString(); if (gmt_ != gmt) { s += "<br/>" + date.toString() + " " + date.toLocaleDateString(); gmt = gmt_; } } document.getElementById("main").innerHTML = s; } </script> </head> <body onload="f1();"> <div id="main"></div> </body> </html>Mozilla Firefox 31.1.0 (Oracle Linux 6.5) работает безупречно:
Mon Mar 01 2010 00:00:00 GMT+0300 (MSK) 01.03.2010 Mon Mar 29 2010 01:00:00 GMT+0400 (MSD) 29.03.2010 Mon Nov 01 2010 00:00:00 GMT+0300 (MSK) 01.11.2010 Mon Mar 28 2011 01:00:00 GMT+0400 (MSK) 28.03.2011 Mon Oct 27 2014 00:00:00 GMT+0300 (MSK) 27.10.2014Internet Explorer 11 (Windows 7) тоже работает безупречно:
Mon Mar 01 2010 00:00:00 GMT+0300 (RTZ 2 (зима)) 01.03.2010 Mon Mar 29 2010 01:00:00 GMT+0400 (RTZ 2 (лето)) 29.03.2010 Mon Nov 01 2010 00:00:00 GMT+0300 (RTZ 2 (зима)) 01.11.2010 Mon Mar 28 2011 01:00:00 GMT+0400 (RTZ 2 (лето)) 28.03.2011 Mon Oct 27 2014 00:00:00 GMT+0300 (RTZ 2 (зима)) 27.10.2014Google Chrome 33.0.1750.154 (Windows 7) не знает, что с 2011 года перевод времени отменён (за исключением 2014 года). И на летнее время переходит в январе:
Mon Mar 01 2010 00:00:00 GMT+0400 (RTZ 2 (лето)) 28.2.2010 Tue Mar 02 2010 00:00:00 GMT+0400 (RTZ 2 (лето)) 1.3.2010 Sun Oct 31 2010 23:00:00 GMT+0300 (RTZ 2 (зима)) 31.10.2010 Thu Jan 06 2011 00:00:00 GMT+0400 (RTZ 2 (лето)) 5.1.2011 Sun Oct 30 2011 23:00:00 GMT+0300 (RTZ 2 (зима)) 31.10.2011 Thu Jan 05 2012 00:00:00 GMT+0400 (RTZ 2 (лето)) 5.1.2012 Sun Oct 28 2012 23:00:00 GMT+0300 (RTZ 2 (зима)) 29.10.2012 Thu Jan 03 2013 00:00:00 GMT+0400 (RTZ 2 (лето)) 3.1.2013 Sun Oct 27 2013 23:00:00 GMT+0300 (RTZ 2 (зима)) 28.10.2013 Thu Jan 02 2014 00:00:00 GMT+0400 (RTZ 2 (лето)) 2.1.2014 Sun Oct 26 2014 23:00:00 GMT+0300 (RTZ 2 (зима)) 27.10.2014 Thu Jan 08 2015 00:00:00 GMT+0400 (RTZ 2 (лето)) 8.1.2015 Sun Oct 25 2015 23:00:00 GMT+0300 (RTZ 2 (зима)) 26.10.2015 Thu Jan 07 2016 00:00:00 GMT+0400 (RTZ 2 (лето)) 7.1.2016Mozilla Firefox 26.0 (Windows 7) тоже сильно ошибается:
Mon Mar 01 2010 00:00:00 GMT+0400 1 Март 2010 г. Tue Mar 02 2010 00:00:00 GMT+0400 2 Март 2010 г. Sun Oct 31 2010 23:00:00 GMT+0300 31 Октябрь 2010 г. Thu Jan 06 2011 00:00:00 GMT+0400 6 Январь 2011 г. Sun Oct 30 2011 23:00:00 GMT+0300 30 Октябрь 2011 г. Thu Jan 05 2012 00:00:00 GMT+0400 5 Январь 2012 г. Sun Oct 28 2012 23:00:00 GMT+0300 28 Октябрь 2012 г. Thu Jan 03 2013 00:00:00 GMT+0400 3 Январь 2013 г. Sun Oct 27 2013 23:00:00 GMT+0300 27 Октябрь 2013 г. Thu Jan 02 2014 00:00:00 GMT+0400 2 Январь 2014 г. Sun Oct 26 2014 23:00:00 GMT+0300 26 Октябрь 2014 г. Thu Jan 08 2015 00:00:00 GMT+0400 8 Январь 2015 г. Sun Oct 25 2015 23:00:00 GMT+0300 25 Октябрь 2015 г. Thu Jan 07 2016 00:00:00 GMT+0400 7 Январь 2016 г.Так что объект Date ведет себя неодинаково на разных платформах. Им нужно пользоваться с большой осторожностью, а лучше найти ему замену.
Комментариев нет:
Отправить комментарий