Что происходит на сервере, чтобы установить время запроса? Учитывается ли часовой пояс, на который настроен сервер?

Я спрашиваю, потому что мне нужно знать, есть ли у меня сайт с часовым поясом, установленным в качестве общесайтовой переменной, и я сравниваю что-то с $_SERVER['REQUEST_TIME'], чтобы узнать, истек ли он, я не уверен, возможно несоответствие часового пояса.

9
beth 10 Июн 2013 в 20:28

1 ответ

Лучший ответ

$_SERVER 'REQUEST_TIME' - это временная метка Unix. Этого должно быть достаточно информации, но если это не так: временные метки Unix всегда основаны на UTC.

Пример PHP

Обозначение временных меток Unix в DateTime заключается в добавлении к числу префикса знака at (" @ "). Затем второй параметр $timeZone вводится и по умолчанию имеет значение "UTC", потому что это временная метка Unix, которая всегда основана на UTC:

$requestTime = new DateTime("@$_SERVER[REQUEST_TIME]");

Дает:

class DateTime#1 (3) {
  public $date          => string(19) "2013-06-23 07:45:44"
  public $timezone_type => int(1)
  public $timezone      => string(6) "+00:00"
}

Невозможно даже принудительно (по метке времени при построении) объект DateTime установить другой часовой пояс - только позже изменение часового пояса.

12
Evert 15 Окт 2014 в 18:38
Это единственная небольшая информация, в которой я не был уверен. unixtimestamp.com подразумевает, что временные метки Unix не всегда находятся в формате UTC. Является ли по умолчанию UTC для временных меток Unix чем-то, что делает PHP-движок?
 – 
beth
10 Июн 2013 в 20:34
1
Нет, временная метка unix - это буквально количество секунд с 1 января 1970 года по всемирному координированному времени. Таким образом, с ним не связано никакого реального часового пояса, это просто отправная точка, которую они выбрали. Все, что использует другую начальную точку, не является меткой времени unix.
 – 
Evert
10 Июн 2013 в 21:40
Моя первая мысль об этом значке @ перед меткой времени была связана с тем, что вы просто отключили PHP E_Notice, потому что в нем, вероятно, нет элемента REQUEST_TIME. Но после того, как попробовали и прочитали документы < / a> Могу сказать, что это правильно.
 – 
Anse
13 Сен 2019 в 06:49