как работает strtotime

89
24 апреля 2021, 09:10

strtotime('2018-09-20 16:49:54') кидаю первый аргумент. Эта функция чутко реагирует на настройки сервера временной зоны. Читал мануал - не понял. Дата которую мы кинули воспринимается сервером как дата нулевого меридиана и к ней прибавляется местное время настроенное на сервере или дата воспринимается как местное время и отнимается это местное время чтобы получить время нулевого меридиана?

В ответе на одном сервере 1537487394 На другом 1537451394

Answer 1

дата воспринимается как местное время

Да, именно так.

Результат работы функции strtotime() зависит от часового пояса, установленного в конфигурации PHP (директива date.timezone). К примеру, если у вас стоит часовой пояс Europe/London, то летом это будет UTC+01:00. PHP определяет, что дата передана в этом часовом поясе и чтобы привести её к UTC нужно вычесть 1 час. В итоге мы получаем unixtime равный 1537458594.

Если конвертировать эту метку времени в обычную дату в любом онлайн конвертере, то мы получим "2018-09-20 15:49:54", то есть на 1 час меньше того, что мы передавали в аргументе strtotime(). А если вы вызовете на локальном сервере функцию date('Y-m-d H:i:s') и подставите во второй аргумент полученный unixtime, то получите уже дату с учётом вашего локального часового пояса: "2018-09-20 16:49:54".

Также предположу, что на серверах установлены следующие часовые пояса:

  • 1537487394 — UTC-07:00,
  • 1537451394 — UTC+03:00.
READ ALSO
Отправка post запроса ajax в php

Отправка post запроса ajax в php

Нужно посмотреть какие данные приходят в phpВыполняется запрос при нажатии кнопки:

109
Кнопка «читать далее»

Кнопка «читать далее»

Сейчас на сайте статью обрывает […]Как можно увеличить количество слов до обрыва и поменять многоточие на надпись «читать далее»

72