Alien2001 10 10/15/14 14:29 С 26 октября в России снова изменяется система исчисления времени и вводится новая шкала часовых зон (подробности - http://www.rg.ru/2014/07/25/vremiya-dok.html). Московское время с этого момента соответствует часовому поясу UTC+3, вместо UTC+4, действовавшего с 2011 года. Сезонный перевод часов осуществляться по-прежнему не будет. Соответственно меняются часовые зоны и других субъектов Федерации. То есть в ночь на 26 октября в большинстве регионов часы будут переведены на один час назад. Исключение составляют Удмуртия, Кемеровская, Самарская области, Камчатский край, Чукотский автономный округ, где часы не переводятся, а также Магаданская область и Забайкальский край, где часы переводятся на два часа назад. Я подготовил для себя соответствующий патч и решил выложить на случай, если кому-то он пригодится. Он нужен обладателям версии 3.4 и тем обладателям более ранних версий, кто менял часовые зоны, исходя из системы 2011 года, а не просто "подкручивал" системное время, либо оставлял все как есть. Для того, чтобы исправить часовые пояса, достаточно внести изменения в языковые файлы. Для русского языка: в наборах слов core/public_usercp и core/admin_global: 'time_2' => "(GMT + 2:00) Киев, Калининград, Хельсинки, Таллинн, Варшава, Иерусалим", 'time_3' => "(GMT + 3:00) Волгоград, Москва, Санкт-Петербург, Минск", 'time_4' => "(GMT + 4:00) Баку, Тбилиси, Ереван, Ижевск, Самара", 'time_5' => "(GMT + 5:00) Екатеринбург, Уфа, Тюмень, Исламабад, Карачи, Ташкент", 'time_6' => "(GMT + 6:00) Астана, Новосибирск, Омск, Барнаул, Дакка", 'time_7' => "(GMT + 7:00) Красноярск, Кемерово, Бангкок, Ханой, Джакарта", 'time_8' => "(GMT + 8:00) Пекин, Гонконг, Сингапур, Тайбей, Иркутск, Улан-Удэ, Чита", 'time_9' => "(GMT + 9:00) Осака, Саппоро, Сеул, Токио, Якутск ", 'time_10' => "(GMT + 10:00) Мельбурн, Сидней, Владивосток, Хабаровск, Магадан, Южно-Сахалинск", 'time_11' => "(GMT + 11:00) Новая Каледония, Соломоновы о-ва, Чокурдах", 'time_12' => "(GMT + 12:00) Петропавловск-Камчатский, Анадырь, Окленд, Фиджи, Веллингтон", Для английского языка: в наборах слов core/public_usercp и core/admin_global: 'time_2' => "(GMT + 2:00 hours) Cairo, Helsinki, Tallinn, Warshaw, Kaliningrad", 'time_3' => "(GMT + 3:00 hours) Baghdad, Riyadh, Moscow, Nairobi", 'time_4' => "(GMT + 4:00 hours) Abu Dhabi, Baku, Muscat, Tbilisi", 'time_5' => "(GMT + 5:00 hours) Karachi, Tashkent, Ekaterinburg", 'time_6' => "(GMT + 6:00 hours) Astana, Novosibirsk, Bangladesh, Dhakra", 'time_7' => "(GMT + 7:00 hours) Bangkok, Hanoi, Jakarta, Krasnoyarsk", 'time_8' => "(GMT + 8:00 hours) Hong Kong, Perth, Singapore, Taipei, Irkutsk", 'time_9' => "(GMT + 9:00 hours) Osaka, Sapporo, Seoul, Tokyo, Yakutsk", 'time_10' => "(GMT + 10:00 hours) Melbourne, Papua New Guinea, Sydney, Vladivostok", Если вы не хотите утруждать своих посетителей ручным переводом часов и корректировкой профайла, вы можете сделать это за них, изменив в базе members значение поля time_offset (для московской зоны - с 4 на 3). Для этого нужно выполнить следующие запросы: UPDATE members SET time_offset=10 WHERE time_offset=12 AND members_auto_dst=0; UPDATE members SET time_offset=10 WHERE time_offset=11 AND members_auto_dst=0; UPDATE members SET time_offset=9 WHERE time_offset=10 AND members_auto_dst=0; UPDATE members SET time_offset=8 WHERE time_offset=9 AND members_auto_dst=0; UPDATE members SET time_offset=7 WHERE time_offset=8 AND members_auto_dst=0; UPDATE members SET time_offset=6 WHERE time_offset=7 AND members_auto_dst=0; UPDATE members SET time_offset=5 WHERE time_offset=6 AND members_auto_dst=0; UPDATE members SET time_offset=3 WHERE time_offset=4 AND members_auto_dst=0; UPDATE members SET time_offset=2 WHERE time_offset=3 AND members_auto_dst=0; В данном примере таблица называется "members", возможно у вас установлены префиксы для таблиц и она называется ibf_members или как-то иначе. Проверьте и замените во всех запросах. Обратите внимание, массовое изменение часовых поясов через базу имеет один существенный минус: в результате таких действий пострадают пользователи из сопредельных стран, которые часовой пояс не меняют. Это Армения, Белоруссия, Узбекистан, Таджикистан, Туркменистан, Грузия, Казахстан, Киргизия, а также Китай, некоторые страны Ближнего Востока и ЮВА. Учитывайте, какая у вас структура посетителей. Кроме того, вы не сможете правильно перевести время для Чукотки, Самарской и Кемеровской областей, Камчатского и Забайкальского краев и Удмуртии. И еще раз, обратите внимание: Россия не переходит на зимнее время! Россия меняет часовые пояса, то есть "сдвигается" по времени на запад относительно всех остальных стран. Надеюсь, кому-то пригодится. 4 Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/15/14 14:54 Для этого нужно выполнить следующие запросы:Либо выполнить один UPDATE members SET time_offset=time_offset-1 WHERE time_offset > 2 AND time_offset NOT IN(5) AND members_auto_dst=0 Поделиться сообщением Ссылка на сообщение
Alien2001 10 10/15/14 15:15 Либо выполнить один UPDATE members SET time_offset=time_offset-1 WHERE time_offset > 2 AND time_offset NOT IN(5) AND members_auto_dst=0 Лучше так не делать. Там есть всякие разные экзотические оффсеты типа GMT + 6:30. И их затрагивать незачем. Понятно, что на русскоязычном форуме вряд ли есть люди из Кабула, но из Бомбея в принципе могут быть. Мы же хотим сделать максимально чисто. Кроме того, там еще одна загогулина имеется, которая из данной формулы выбивается: UPDATE members SET time_offset=10 WHERE time_offset=12 AND members_auto_dst=0 Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/15/14 15:23 Мы же хотим сделать максимально чисто.Ну ок. Исправим чтобы было все "чисто" UPDATE members SET time_offset=IF(time_offset=12, time_offset-2, time_offset-1) WHERE time_offset BETWEEN 3 AND 12 AND time_offset NOT IN(5) AND members_auto_dst=0 1 Поделиться сообщением Ссылка на сообщение
Благодарный 0 11/17/14 15:25 Зарегился, чтобы сказать вам СПАСИБО! :rolleyes: Поделиться сообщением Ссылка на сообщение