Alien2001 Posted October 15, 2014 Share Posted October 15, 2014 С 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 Link to comment Share on other sites More sharing options...
siv1987 Posted October 15, 2014 Share Posted October 15, 2014 Для этого нужно выполнить следующие запросы:Либо выполнить один UPDATE members SET time_offset=time_offset-1 WHERE time_offset > 2 AND time_offset NOT IN(5) AND members_auto_dst=0 Link to comment Share on other sites More sharing options...
Alien2001 Posted October 15, 2014 Author Share Posted October 15, 2014 Либо выполнить один 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 Link to comment Share on other sites More sharing options...
siv1987 Posted October 15, 2014 Share Posted October 15, 2014 Мы же хотим сделать максимально чисто.Ну ок. Исправим чтобы было все "чисто" 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 Link to comment Share on other sites More sharing options...
Благодарный Posted November 17, 2014 Share Posted November 17, 2014 Зарегился, чтобы сказать вам СПАСИБО! :rolleyes: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now