На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Проблема со временем , PHP считает, что надо считать часы по зимнему времени
      Всем привет!

      Думаю, название темы с описанием говорит о сути вопроса. У меня Windows 7 Ultimate русское издание, PHP 5.2.17. Вообще-то, пишу Android-приложение для службы такси, тут уже светился с этим на форуме. Но оно не может работать без веб-сервиса, от которого должно принимать и отправлять данные. На рабочем сервере мне тестировать запрещено, поэтому поднял сайт у себя.

      Сегодня только что столкнулся с тем, что мой тестовый экипаж такси не отображается на карте, хоть и посылает состояние Свободен и текущие тестовые координаты где-то в центре города. Хотя утром еще все работало. Долго ковырялся, посылал те же данные из формы на сайте - тоже не успешно. В итоге обнаружил, что в одной из таблиц (а наверно, и во многих других) время последнего обновления данных значится на час вперед, a-la по зимнему времени. Посмотрел в phpinfo() - там значится Default timezone: Europe/Moscow. Помню, что проставлял это в php.ini. Директивы для задания/снятия перехода на зимнее время я не нашел в справке. Хотелось бы зону оставить, но так, чтобы переход на зимнее время убрался.

      Может, это и не есть корень зла, и отображение экипажа не работает по другой причине, но хотелось бы эту проблему со временем решить.

      Буду признателен за помощь!

      Добавлено
      Да, в виндах стоит московское время без перехода на зимнее.
        В PHP есть встроенная база данных времени. В ней содержится отношение зона+текущее время по UTC+текущее смещение от UTC. То есть она знает, что 27-го марта в Москве летнее время. А знает она потому, что создана была достаточно давно.

        Проблема усугубляется тем, что эта база вкомпилена в PHP, а PHP ветки 5.2 больше не поддерживается и обновлений для него не будет (емнип, обновление этой БД, затрагивающее МСК было осенью 2011-го, а PHP 5.2.17 вышел ещё весной).

        Варианты решения:
        1. можно попробовать найти более-менее новое расширение timezone (не уверен, что для windows оно есть - в некоторых юниксах есть в репозитории). Можно попробовать начать от сюда: http://pecl.php.net/package/timezonedb
        2. пересобрать PHP, взяв новую версию ext/date/lib/timezone*.*
        3. самое лучшее (хотя и не всегда возможно сделать быстро) обновить PHP.
        Сообщение отредактировано: negram -
          У меня до недавнего времени был PHP 5.3, потом совсем чуток попробовал на PHP 5.4. Откатился к PHP 5.2, потому что в более новом у меня не работал libcurl. Как выяснилось - из-за конфликта бинарников Apache, собранных в VC6, и бинарников самого PHP для двух последних версий, собранных в VC9 - модуль PHP просто сбаивал и перезагружался. Установка 5.2-версии это устранила.

          Наверно, все-таки лучше, из предложенных вариантов, полноценно портануться на 5.3 или 5.4. Для этого надо найти бинарники Apache, собранные в VC9, такие вроде бы где-то есть. Попробую уже завтра утром нарыть.
            Ээээ, а если поднимать на локалхосте, то зачем лишние геморы? Качаешь боянистый денвер и радуешься жизни
              Гм, ну привык уже как-то ставить Apache + PHP + MySQL по отдельности. Как-то поставил какую-то сборку (не денвер) - там проблема с кодировкой в MySQL была, СУБД вообще не запускалась, починить не удалось.
                Господа, нарыл на Apache Lounge билд Apache в VC10 ажно, там было сказано, что PHP в VC9 он тоже будет нормально грузить. PHP обновил до 5.4. В phpinfo() это видно, как и timezone Europe/Moscow. Но вызов echo date("H:i:s"); по-прежнему печатает по зимнему времени, то есть, на час больше!

                Добавлено
                Это уж злобно, билд-то PHP-февральский!

                Добавлено
                Гм, странно, после перезагрузки системы стал модуль PHP валиться. Наверно, надо все-таки апач в VC9 поставить...

                Добавлено
                Поставил бинарники Apache VC9 - просто переписал все файлы в папках bin и modules - сайты на локалхосте заработали намана. Ну теперь буду думать, как дальше траблу со временем решать, раз портирование на самую свежую версию PHP не помогло.
                  а date('r T') ?
                    Гм, все равно вдруг снова сайт на локалхосте начал валиться...

                    Добавлено
                    Цитата negram @

                    а date('r T') ?

                    Дает тоже на час больше, +4 MSK
                      Цитата Homez @
                      Дает тоже на час больше, +4 MSK
                      Так мы сейчас по этому времени и живем, разве нет?
                        Да вроде нет, перехода же на зимнее время больше нет.
                          Цитата Homez @
                          Да вроде нет, перехода же на зимнее время больше нет.
                          Нету, только отменили переходы именно в тот момент, когда мы находились на зимнем времени ;)

                          Добавлено
                          Или наоборот, отменили переход на летнее время, а не зимнее, я забыл, но усвоил, что теперь мы живем по +4 (а не +3 как раньше) :rolleyes:

                          Это было ИМХО, потому, что я уже сам запутался...

                          Добавлено
                          Вот у тебя сейчас сколько времени? Ты ведь по Московскому живешь?
                          У меня 14:40 (округлил) и при этом труба мне говорит, что живу я по GMT + 04:00 ;)
                            Может, труба у тебя старее, чем переход на зимнее время отменили? Я вообще-то думал, что GMT + 4 - это на час больше, зимнее время. У меня тоже эмулятор андроид думает, что московское время - это GMT +4. В результате пришлось поставить другой часовой пояс, чтобы было +3, тогда время стало показывать в эмуляторе правильно.

                            Добавлено
                            fatalist, может, Вы и правы. Но тогда получается, что это моя 7ая винда неправильно считает время? Там часовой пояс Москвы считается как GMT + 3. Получается, мне нужно поставить другой часовой пояс, где GMT + 4? Как решить-то эту проблему, чтобы больше ничего не слетело, особенно в даты, когда раньше время переводилось?

                            P.S. Да, подсиропил нам Медведев...
                            Сообщение отредактировано: Homez -
                              Откатился на PHP 5.2.17 и Apache 2.2, так как не удалось справиться с завалами модуля PHP

                              Добавлено
                              Удалось нарисовать машинку на карте, но дя этого пришлось в загружаемых файлах с состоянием экипажа и координатами задать время на час больше текущего. Правильно, сервер ведь думает, что сейчас на 1 час больше.

                              Кстати, date('r T') выдает Wed, 28 Mar 2012 17:18:46 +0400 MSD. Судя по часовому поясу, наверно и в этой версии PHP проблема со временем решена. Наверно, дело в винде, которая думает, что у меня GMT + 3. Как это решить?
                                А в винде последние обновления стоят?
                                  Цитата Homez @
                                  Наверно, дело в винде, которая думает, что у меня GMT + 3. Как это решить?
                                  Там наверное списки просто не поправили... у меня тоже написано +3, но я знаю, что живу по +4 и винда мне на это не указчик :lol:
                                    Цитата negram @
                                    А в винде последние обновления стоят?

                                    Нет. У меня пиратка. Обновиться можно?

                                    Цитата fatalist @
                                    Там наверное списки просто не поправили... у меня тоже написано +3, но я знаю, что живу по +4 и винда мне на это не указчик :lol:

                                    Но тем не менее, время у меня в PHP и эмуляторе Android неправильное.
                                      Цитата Homez @
                                      Нет. У меня пиратка. Обновиться можно?

                                      Если 7ка или 8ка, то без проблем
                                        Ок, попробую!
                                          Цитата Homez @
                                          Но тем не менее, время у меня в PHP и эмуляторе Android неправильное.

                                          Ну я не знаю... У меня сервак с ПХП 5.2 (Денвер) стоит уже сто лет (ну с прошлого года, когда комп поменял) и никаких проблем со временем...

                                          Системное время то у тебя правильное?
                                          Они же все его не спотолка берут?
                                          В системе отключен автоматический переход на летнее время?
                                            Если 7ка с патчами - там пофикшен автоматический переход для Руси
                                            Сообщение отредактировано: Serafim -
                                              Если что, времени MSD больше не существует. Теперь есть только MSK (UTC+4)
                                              http://www.timeanddate.com/library/abbrevi...nes/eu/msd.html
                                              http://www.timeanddate.com/library/abbrevi...nes/eu/msk.html
                                                Цитата fatalist @
                                                Системное время то у тебя правильное?
                                                Они же все его не спотолка берут?
                                                В системе отключен автоматический переход на летнее время?



                                                Системное время вот сейчас, когда пишу - 17:54. Переход с летнего на зимнее и обратно отключен.

                                                Добавлено
                                                Гм, попробовал обновить время с сервера синхронизации времени. В итоге у меня поставилось время на час раньше. Поставил галочку для автоматического перехода на летнее/зимнее время, повторно получил время с сервера. Поставилось правильное время. Удивительно. Запустил тот скрипт, в котором текущее время получал. Там вернулось правильное время! На загрузке данных по машинке еще не проверял, сейчас некогда, проверю попозже, но надеюсь, что все будет ок!
                                                  Цитата Homez @
                                                  Гм, попробовал обновить время с сервера синхронизации времени. В итоге у меня поставилось время на час раньше. Поставил галочку для автоматического перехода на летнее/зимнее время, повторно получил время с сервера. Поставилось правильное время. Удивительно.

                                                  Ничего удивительного... Еще раз объясняю: мы живем по GMT +4, а у тебя стоит GMT +3 и просто вручную сдвинуто время на час назад... Поставь уже GMT +4 и обнови с сервера - это и будет правильное время...
                                                    но факт, что там выбора GMT+4 и нет.

                                                    Добавлено
                                                    ну то есть, это уже как бы и не Москва будет
                                                      Цитата Homez @
                                                      ну то есть, это уже как бы и не Москва будет
                                                      :wall:
                                                      То, что у тебя в винде написано Москва/не Москва в списке выбора никак не вляет ни на всемирное время, ни на московкое!
                                                      Сообщение отредактировано: fatalist -
                                                        Цитата fatalist @
                                                        То, что у тебя в винде написано Москва/не Москва в списке выбора никак не вляет ни на всемирное время, ни на московкое!

                                                        Не совсем понял. Ты предлагаешь поставить GMT+4, выбрав другой город? Так как для Москвы там стоит GMT+3.

                                                        Добавлено
                                                        И галочка переход на летнее/зимнее время должна быть снята?

                                                        P.S.Возможности обновить винду пока нет, так как у меня запущена долгоиграющая задачка, которую не хочу прерывать, а после обновления же наверняка запросится перезагрузка. Как только задачка доделается, попробую обновиться.
                                                          Цитата Homez @
                                                          Не совсем понял. Ты предлагаешь поставить GMT+4, выбрав другой город?
                                                          :wall:
                                                          А что это еще может означать? :lol:
                                                          Цитата Homez @
                                                          И галочка переход на летнее/зимнее время должна быть снята?
                                                          Если учесть, что мы никуда не переходим уже, ответ очевиден 8-)
                                                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                          0 пользователей:


                                                          Рейтинг@Mail.ru
                                                          [ Script execution time: 0,0565 ]   [ 15 queries used ]   [ Generated: 21.05.24, 04:32 GMT ]