Если значение time () в PhP не зависит от часового пояса, то почему функция даты по умолчанию для него?

Согласно http://www.php.net/manual/en/function.date.php

Необязательный параметр timestamp - это целочисленная временная метка Unix, которая по умолчанию равна текущему местному времени, если временная метка не указана. Другими словами, по умолчанию используется значение time ().

Однако в определении time () нет упоминания о том, что это зависит от часового пояса. Какой из них правильный?


person user4951    schedule 20.12.2012    source источник


Ответы (4)


time () возвращает количество секунд с 00:00 01.01.1970 по Гринвичу.

Прошедшее количество секунд с эпохи UNIX одинаково независимо от того, в каком часовом поясе вы находитесь.

person paulgrav    schedule 20.12.2012

Нет, значение, возвращаемое time(), не зависит от часового пояса:

date_default_timezone_set("UTC");
echo "UTC:".time();
echo "<br>";

date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".time();
echo "<br>"; 

Оба выводят одно и то же значение.

Что касается вашего редактирования, возвращаемое значение time() зависит от текущего времени на вашем компьютере. Текущее время на вашем компьютере обычно устанавливается путем указания часового пояса, а также даты + времени.

Когда мы говорим, что значение, возвращаемое time(), не зависит от часового пояса, мы имеем в виду, что в любой данный момент правильное значение времени UTC во всех местах на Земле одинаково.

Предположим, человек в Японии должен правильно установить системное время (вместе с часовым поясом), а другой человек в Индии должен сделать то же самое. В любой момент, если бы они одновременно вызывали time(), они бы получили одно и то же значение.

person Asad Saeeduddin    schedule 20.12.2012
comment
Вам нужно знать соответствующий часовой пояс вашего компьютера, чтобы получить истинную временную метку. - person dynamic; 20.12.2012
comment
@llnk Вопрос в том, зависит ли значение, возвращаемое time() часовым поясом ?. Ответ: нет, это не так. Не имеет значения, установлено ли на вашей машине системное время 1982 года. - person Asad Saeeduddin; 20.12.2012

Я думаю, что документация немного расплывчата, что означает "локальный", как в "машины, на которой она работает". Или вы можете сделать так, чтобы это означало, что, поскольку date форматирует метку времени в соответствии с установленным часовым поясом, значение, возвращаемое date, будет "местным" временем.

То есть «местный» здесь на самом деле ничего не значит.

person deceze♦    schedule 20.12.2012
comment
В этом нет смысла. Конечно, локальные средства машины, на которой он работает, и это не обязательно то же самое со временем Greenwitch. - person user4951; 20.12.2012

Думаю, я знаю, в чем проблема.

time () не зависит от часового пояса.

Тем не мение,

date () зависит от часового пояса. Форматирование данных зависит от date_default_timezone_set

Итак, после ответа Асада

date_default_timezone_set("UTC");
echo "UTC:".date(...);
echo "<br>";

date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".date(...);
echo "<br>"; 

будет производить различную стоимость. Они оба используют время

person user4951    schedule 21.12.2012