За последние 24 часа нас посетили 22306 программистов и 1058 роботов. Сейчас ищут 595 программистов ...

Объясните почему так происходит

Тема в разделе "PHP для профи", создана пользователем Васяня, 14 мар 2019.

  1. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Вот скрипт:

    PHP:
    1. <?php
    2.  
    3.  
    4. echo "GMT+0: " . (new DateTime('now', new DateTimeZone('Etc/GMT')))->format('Y-m-d H:i:sP') . "\n";
    5. echo "Europe/Moscow: " . (new DateTime('now', new DateTimeZone('Europe/Moscow')))->format('Y-m-d H:i:sP') . "\n";
    6. echo "GMT+3: " . (new DateTime('now', new DateTimeZone('Etc/GMT+3')))->format('Y-m-d H:i:sP') . "\n";
    Вот что он выводит:
    Код (Text):
    1. GMT+0: 2019-03-14 08:01:40+00:00
    2. Europe/Moscow: 2019-03-14 11:01:40+03:00
    3. GMT+3: 2019-03-14 05:01:40-03:00
    Проблема возникла в том что php по какой то не понятной причине интерпретирует временную зону Etc/GMT+3 как Etc/GMT-3. То есть он должен от времени по Гринвичу прибавлять 3 часа дабы получить московское время, но он по каким то не известным причинам отнимает. Объясните мне в чём тут прикол, может я что то не понимаю?

    P.S. Я знаю что GMT лучше не использовать, я знаю что есть UTC. Но я не могу задать смещение относительно UTC средствами php, я только могу использовать 100500 названий временных зон, у пользователя должен быть простой select с маленьким списком временных зон, поэтому используется GMT.
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
  3. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Вообще не понял что это значит.

    То есть такое забагованное поведение является нормальным для php?
    --- Добавлено ---
    Это цвет
    --- Добавлено ---
    Будем знать про багофичу
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
    Видимо в буфере обмена у него было лишнее )))
    По сути-то ссылка всё объясняет. Скопирую сюда для наглядности:

    --- Добавлено ---
    как видишь, это не для PHP придумано, просто используется стандартная база в которой вот такая странность.
     
  5. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Шутка-юмора такая у него. Как чёрным по белому, только #333 (тёмно серым) по #F4DFDF (розовому). Не поленился же ctrl+shift+i и посмотрел цвета на php.net, эта цвета того алерта (я проверил) где рассказано про это поведение. Очень тонкий юмор не сразу понял.

    Ладно, спасибо.
     
    Fell-x27 нравится это.