Еще раз о проблеме перехода на летнее время...
Всем, кому еще интересно решение проблемы со временем в ИГО8. В продолжение своего
поста, я, как и обещал, разобрался (как мне кажется
) с проблеммой летнего временни в ИГО8. Вот что я выяснил:
Патч от мелкомягких имеет эффект на операционной системе, а также в программах, которые пользуются временем, выставленным ОС. Все, что писал камрад
vig,
оказалось верным. Если откатить время в системе на 27.03.2009 на 01:59:00 после установки патча и подождать минуту, то можно убедиться, что патч имеет свой эффект,- время перескакивает на час вперед, предварительно мы видим соответствующее предупреждение:
В программе ИГО8 есть свои настройки для часовых поясов (как правильно сказал все тот же камрад
vig, проблема в связке data.zip\config\tzinfo.bin & data.zip\config\timezones.ini). Даже после установки патча, если установлена галочка в "Автоматический часовой пояс" после перехода на летнее время, все равно разница остается 2 часа между GMT времением и местным. Изменение значения параметра TZI в регистре, не дает эффекта, как я предполагал ранее. Здесь, я наверное, сделаю небольшое отступление, чтобы раз и навсегда прояснить этот вопрос.
В зимнее время разица между GMT временем и местным составляет ровно два часа, а в летнее время соответственно три. Проверить разницу во времени, в любой момент, можно на этом
сайте. Дело в том, что, скорее всего в ИГО 8 в файле tzinfo.bin как раз прописано, что для Jerusalem разница всегда должна составлять два часа, и не берется в расчет тот факт, что летом у нас добавляется один час. Поэтому если выставить галочку в "Автоматический часовой пояс" разница всегда будет 2 часа. Теперь рассмотрим как бороться с этим явлением...
Зимой у нас проблем нет,- разница с GMT временем составляет ровно два часа, а вот с переходом на летнее время начинаются проблемы...
Способов решения есть два (независимо от того, установили ли вы патч от мелкомягких или нет):
1. Самый распостраненный способ "переехать" на лето в Кувейт (GMT +3), к примеру или в Афины (у них хоть и GMT +2 как и у нас, но летнее время учитывается ИГО8), - выставить это дело в настройках часового пояса и убрать галочку с "Автоматический часовой пояс".
2. Тем, кто не желает никуда "переезжать" и кому важно все таки видеть (GMT +02:00) Jerusalem в настройках делаем следующее:
Открываем data.zip ->config ->timezones.ini, находим там строку:
Код: Выделить всё
timezone = "(GMT+02:00) Athens, Bucharest, Istanbul", -120, -60, 0, 0, 3, 0, 5, 3, 0, 0, 0, 0, 10, 0, 5, 4, 0, 0, 0
находим строку:
Код: Выделить всё
timezone = "(GMT+02:00) Jerusalem", -120, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
и меняем значение
-120, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 на
-120, -60, 0, 0, 3, 0, 5, 3, 0, 0, 0, 0, 10, 0, 5, 4, 0, 0, 0
И опять же, не забываем убрать галочку с "Автоматический часовой пояс". Теперь летом у вас будет отображаться в настройках часового пояса (GMT +02:00) Jerusalem, а разница с GMT на самом деле будет три часа, а не два. При переходе на зимнее время нужно будет вернуть значение
-120, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 на место или же просто-напросто утановить галочу в "Автоматический часовой пояс". К слову сказать, подобное решение проблемы уже описывалось ранее в ФАКе.
Дополнение:
vig писал(а):Маленькое уточнение "для тех, кто не желает никуда "переезжать" и кому важно все таки видеть (GMT +02:00) Jerusalem"
Строка для Иерусалима должна выглядеть:
Код: Выделить всё
timezone = "(GMT+02:00) Jerusalem", -120, -60, 0, 0, 3, 5, 4, 2, 0, 0, 0, 0, 9, 0, 5, 2, 0, 0, 0
(Если я правильно разобрался в структуре файла timezones.ini)
В этом случае при переходе на зимнее время ничего делать не нужно, время в программе откатится на час назад автоматически.