Разница во времени Москва-Лондон 3 часа? А вот и не всегда.

sverel

Новичок
Разница во времени Москва-Лондон 3 часа? А вот и не всегда.

На сервере по умолчанию стоит TimeZone = Europe/Moscow.
Определяем разницу между Москвой и Лондоном.

Для начала сделаю 1 января 2011 года (что бы избавится от всяких переходов на летнее время):

PHP:
$ny = mktime(3, 0, 0, 1, 1, 2011);
echo date('Y-m-d H:i:s', $ny); // 2011-01-01 03:00:00
date_default_timezone_set('Europe/London'); // true
echo date('Y-m-d H:i:s', $ny); // 2011-01-01 00:00:00
Разница 3 часа – всё верно. А теперь всё то же самое, но для 1970 года.

PHP:
$ny = mktime(3, 0, 0, 1, 1, 1970); // тут 0
echo date('Y-m-d H:i:s', $ny); // 1970-01-01 03:00:00
date_default_timezone_set('Europe/London');
echo date('Y-m-d H:i:s', $ny); // 1970-01-01 01:00:00
Разница 2 часа. Как так? Может за 40 лет Лондон переместился в другой часовой пояс?
Для 1971 года тоже 2 часа, а вот для 1972 уже 3 часа.
Тестировалось на WindowsXP, php v5.2.14 и 5.3.3
 

FB3

Новичок
Возможно какая-то связь с переходами на летнее время и обратно.

Опа:
http://www.timeanddate.com/library/abbreviations/timezones/eu/bst.html
http://www.timeanddate.com/library/abbreviations/timezones/eu/gmt.html

Вроде оно.
А, там не написано конкретно, почему. Вообщем, если конвертером там воспользуешься на сайте, то в 70 и 71 году Лондон жил по BST в этот день, а в 2011 живет по GMT в этот день.
 

sverel

Новичок
British Summer Time
London will stay on BST until Sunday, October 31, 2010 at 2:00 AM

Это всего-лиш летнее время. Но я то считал для января.
 

@ndrey

Новичок
Упс... я тоже в свое время задавался этим вопросом... а ларчик, то оказывается просто открывался - BST.
Вот разгадка - http://wwp.greenwichmeantime.com/info/bst2.htm, оказывается BST это не всегда летнее время...
 

FB3

Новичок
sverel
Последнюю строчку моего сообщения внимательно прочел? :)
Да и после меня вон более полезную ссылку привели, я не стал дальше гуглить за тебя, Андрей продолжил :)
 
Сверху