Хочу рассказать, какой эпический butthurt приключился у меня вчера на фоне смены часовых поясов подконтрольных серверов. Вот скажи мне человек, почему магаданский часовой пояс в винде называется (UTC+11)? Если магаданское время это UTC-11!!!
Не секрет, что 24.04.2016 в магадане изменился часовой пояс (снова). Под Ubuntu вышла обнова, но как это обычно бывает, на боевых серверах нет интернета. Посему, решил я ставить универсальную часовую зону Etc/GMT+11, улавливаешь чем история кончилась? После синхронизации по ntp время на сервере с какого то хера ускакало на 22 часа назад!
Можно было конечно в тупую поставить часовой пояс при котором отображалось бы верное время, и не разбираться, но в последствии было б только хуже, т.к. уже никто, включая меня не знал, где, что и как настроено. (Т.к. нужно синхронизировать настройки часового пояса в /etc/php5/apache, /etc/localtime и tzdata-java).
Вообще говоря, по стандарту положено, что бы хардверное время было установлено в UTC, а системное применяло часовой пояс и показывало локальное время. Но разработчики Windows как всегда имеют свое мнение. Вот характерый коммент человека, на stackoverflow.com:
Unicode.org hosts a mapping as part of the CLDR. You can get to the latest version here. There are also XML versions of the data linked from that page.
You can find example code (in Python) of how to generate a mapping from the XML data here.
Obligatory Time Zone Rant:
Note that whoever implemented the timezone support in Windows was on drugs. I’m not kidding you. Look at the timezone names. Why is Central European time known as “Romance standard Time”. Romance? What, because it includes Paris, or? Roman Standard Time could have made sense a it also includes Rome, but Romance!?
Also, in the registry the timezones are not organized under their id. No, they are, insanely, organized under their display name! Since that is localized, it means every timezone will be located under a different key in different translations of Windows!!! So to find the right timezone, you have to look through all the timezone to see which has the correct id.
I have example code of that too here. See the
get_win_timezone()
function.I wonder if it is the same guy who designed this that decided that POSIX should reverse the sign on timezones, so that -8 hours mean plus 8 hours. In any case, I’m sure they were smoking something illegal together.
отсюда: http://stackoverflow.com/questions/4967903/linux-windows-timezone-mapping
т.е. мало того, что они при настройке системы используют локальное системное время (хардверное), так еще и название часовых поясов а-ля мелкософт разжижают мозг ни в чем не повинных людей. Т.е. если видишь в настройках винды UTC+11, это значит, что для получения Universal Time, нужно к системному прибавить 11 часов. Хотя по всем канонам, если написано UTC+11, или GMT+11, то значит это не что иное как – к Universal Time прибавить 11, и получишь местное!!!!