Дата и время публикации: Дата и время модификации:
Проблема и решение
1. Суть проблемы
Обычно в последние выходные Октября, мы привычно переводили стрелки назад, с грустью провожая последнее свидетельство Лето... А в конце 2011 года, как ранее нас уже предупреждала lenta.ru, Президент РФ Дмитрий Медведев объявил об отмене в России перехода на зимнее и летнее время.
В итоге, по сообщениям от 30 октября 2011 года gazeta.ru, "телефоны, будильники и ноутбуки вопреки указу Президента РФ перевелись на час назад".
Осознание того в каком времени мы живем?
Мы остались жить в декретном времени, которое было установлено при так называемом переходе c зимнего на летнее время.
Зимнее время по Москве соотносится с временем Гринвича ровно на 3 часа в плюс(обознач. временной зоны GMT+3), в то время как летнее время по Москве соотносится с временем Гринвича ровно на 4 часа в плюс(обознач. временной зоны GMT+4). Именно это время мы называем декретным временем, т.е. как пишет Wikipedia.Org, система исчисления времени "поясное время плюс один час", которая было введена постановлением СНК СССР от 16 июня 1930 года на территории СССР. Таким образом, поясным временем является зимнее время по Москве(обознач. временной зоны GMT+3).
Таким образом проблема для живущих по Московскому времени, в прочем как и остальных живущих по своему временный зоне, состоит в том, что у нас не получится перейти на временную зону своего поясного времени GMT+3(MSK – Moscow Standard Time), т.к. нам нужно остаться во временной зоне декретного времени GMT+4(MSD – Moscow Daylight Time), т.е. GMT+3+1(DST) = GMT+4.
Теперь нам вроде бы все понятно, но остается вопрос: Так почему 30-го октября 2011 года наши телефоны, будильники и ноутбуки перевелись на час назад.
Давайте вернемся к формуле: GMT+3+1(DST) = GMT+4. Как видим, для того чтобы из временной зоны GMT+3 сделать GMT+4 не меняя саму временную зону нужно изменить флаг DST(Daylight Saving Time). Иначе, если мы установим GMT+4 с нами произойдет неприятная метаморфоза, потому что мы окажемся вместо Москвы скорее в Тбилиси, которая имеет эту временную зону в качестве своего поясного времени. Поэтому, декретное или летнее время соответствуют соседней временной, но никоим образом не равна её зоне поясного времени. Таким образом, 30 октября 2011 года где-то между 2-мя и 3-мя часами ночи, флаг DST(Daylight Saving Time) обнулился, поэтому телефоны, будильники и ноутбуки соответсвенно перевелись на час назад.
2. Решение проблемы
Решением этой проблемы на первый взгляд было бы заставить компьютер остаться в декретной временной зоне путем запрета обнуления флага DST.
НО это не поможет, так как дистрибутив Debian GNU/Linux использует базу данных временных зон IANA, которая считает, что как следует из следующего дампа, что с 3-х часов ночи 26 марта 2011 года поясная временная зона MSK будет равна GMT+4. Поэтому на вопрос: "Как сохранить системное время в зоне декретного времени?" Ответ напрашивается сам собой: "Никак!".
Компьютеры же с установленным дистрибутивом Debian GNU/Linux не перевелись на час назад, как это было например с некоторыми телефонами на базе Android и им подобным, которые скорее всего не обновили базу данных временных зон IANA. Поэтому в ситуации с несанкционированной коррекцией времени нужно винить нерадивых производителей операционных систем, телефонов и ноутбуков чем кого-либо другого.
$zdump -v /etc/localtime /etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 /etc/localtime Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 07:14:07 2038 MSK isdst=0 gmtoff=14400 /etc/localtime Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 07:14:07 2038 MSK isdst=0 gmtoff=14400
Если же у Вас такая проблема с дистрибутивом Debian GNU/Linux возникла, то вам нужно просто обновить его. В выше приведенным дампе, isdst указывает на флаг DST, который равен нулю, потому что не используется. А смещение по Гринвичу gmtoff, начиная с 3-х часов времени по Москве, равен 14400 секундам, что составляет 4 часа.
root@home:~# apt-get update root@home:~# apt-get dist-upgrade