Согласно федеральному закону Российской Федерации от 21 июля 2014 г. N 248-ФЗ, в закон об истечении времени под номером N 107-ФЗ от 3-го июня 2011 года, были внесены изменения, в связи с которыми 26 октября 2014 года осуществляется перевод часов и устанавливаются соответствующие часовые зоны и значения времени.
Windows
Корпорация Microsoft выпустила очередное обновление KB2998527, предназначенное для учета текущих изменений в порядке исчисления времени, благодаря которому в операционные системы Windows будут внесены соответствующие изменения. Для ОС Windows XP такое обновление не выпускалось, т. к. данная ОС снята с поддержки. Однако существует неофициальный патч для этой системы основанный на KB2998527 для Windows XP Embedded от Конура.
https://help.kontur.ru/content/components/WindowsXP-KB2998527-x86-ENU.msi
https://help.kontur.ru/content/components/WindowsXP-KB2998527-x86-RUS.msi
После установки необходимый часовой пояс выставляем в ручную.
FreeBSD
Получаем расписание перевода часов на 2014 год:
zdump -v /etc/localtime | grep 2014
Если видим две строки с корректировкой часового пояса 26 октября, значит, обновление не требуется.
/etc/localtime Sat Oct 25 19:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 YEKT isdst=0 gmtoff=21600 /etc/localtime Sat Oct 25 20:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 YEKT isdst=0 gmtoff=18000
Если вывод пуст, или отображается более двух строк, значит необходимо обновить базу часовых поясов.
Для FreeBSD 8.4, 9.1, 9.2, 9.3 и 10.0 с ядром GENERIC используем FreeBSD Update.
Системы с модифицированным ядром обновляем из коллекции портов или из исходников.
Проверяем идентификатор ядра:
uname -i
Если видим значение отличное от GENERIC, переходим к установке из коллекции портов. В случае бинарного обновления, ядро будет заменено стандартным.
Загружаем и устанавливаем обновления:
freebsd-update fetch install
Обновляем текущий часовой пояс:
tzsetup -r
В случае успешной установки переходим к верификации.
Обновление из исходников с пересборкой мира
Способ полезен только для тех, кто обновляет систему из исходников.
Устанавливаем патч FreeBSD-EN-14:10.tzdata.
Пересобираем мир.
Обновляем текущий часовой пояс.
В случае успешной установки переходим к верификации.
Установка из коллекции портов
Обновляем коллекцию портов:
portsnap fetch extract
Устанавливаем порт zoneinfo:
cd /usr/ports/misc/zoneinfo && make install clean
Обновляем текущий часовой пояс:
tzsetup -r
В случае успешной установки переходим к верификации.
Установка базы часовых поясов вручную
Загружаем актуальную версию базы часовых поясов:
fetch ftp://ftp.iana.org/tz/tzdata-latest.tar.gz
Распаковываем архив:
mkdir tzdata cd tzdata tar xzf ../tzdata-latest.tar.gz
Компилируем данные для Европы:
zic europe
Результат компиляции записывается непосредственно в папку назначения: /usr/share/zoneinfo. Проверяем, что файлы имеют текущую дату:
ls -l /usr/share/zoneinfo/Europe ls -lt /usr/share/zoneinfo/Asia | head
Обновляем текущий часовой пояс:
tzsetup -r
XenServer
Загружаем актуальную версию базы часовых поясов:
wget ftp://ftp.iana.org/tz/tzdata-latest.tar.gz
Распаковываем архив:
mkdir tzdata cd tzdata tar xzf ../tzdata-latest.tar.gz
Компилируем данные для Европы:
zic europe
Результат компиляции записывается непосредственно в папку назначения: /usr/share/zoneinfo. Проверяем, что файлы имеют текущую дату:
ls -l /usr/share/zoneinfo/Europe
ls -lt /usr/share/zoneinfo/Asia | head
Обновляем текущий часовой пояс:
tzdata-update
Верификация
Проверяем:
zdump -v /etc/localtime | grep 2014
Если видим две строки с корректировкой часового пояса 26 октября, значит, база обновлена успешно.
/etc/localtime Sat Oct 25 19:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 YEKT isdst=0 gmtoff=21600 /etc/localtime Sat Oct 25 20:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 YEKT isdst=0 gmtoff=18000
Часы будут переведены 26 октября в 02:00 на час назад.
Проверяем часовой пояс по состоянию на 1 ноября 2014 года:
date -j 1411010000 '+%z %Z'
Для фактического тестирования перевода часов используем команду:
date 1410260154 '+%x %X %z %Z'
Часы будут установлены на 26 октября 01:54. Обратите внимание, часовой пояс не всегда интерпретируется корректно. Если время задано в новом часовом поясе, то перевода часов не произойдет. В этом случае, используйте значение 1410260059, но ждать перевода часов придется час.
Ждем наступления двух часов и проверяем время:
date '+%x %X %z %Z'
Часовой пояс должен быть изменен. Не забудьте восстановить текущее время.
Изменения часовых поясов вступают в силу для вновь запускаемых программ, чтобы применить изменения для всех служб, требуется перезагрузка системы.
Обновление часовых поясов в PHP
PHP использует собственную базу часовых поясов, ее необходимо обновить отдельно.
Проверяем необходимость обновления базы, получаем часовой пояс на 1 ноября 2014 года, регион необходимо указать свой:
php -r 'date_default_timezone_set("Europe/Moscow"); echo "\n".date ("P",1414789200)."\n\n";'
Если видим неверный часовой пояс, приступаем к обновлению.
При установке PHP из пакета:
pkg install pecl-timezonedb
При установке PHP из портов:
cd /usr/ports/misc/pecl-timezonedb/ make install clean
Проверяем часовой пояс.
Если PHP работает в качестве модуля Apache, перезагружаем веб-сервер чтобы применить изменения.