mktime использует информацию о часовом поясе при определении того, каким должно быть возвращаемое время, и возвращает значение, соответствующее UTC.Если вы хотите переопределить это, вам нужно передать явный is_dst = 0
параметр
. Затем вы используете это время UTC при создании объекта DateTime (это то, что делает @
), что означает, чточасовое смещение реплицируется в объект DateTime.
Поскольку mktime
использует информацию о местном часовом поясе, вы должны использовать альтернативу gmmktime
, если вы хотите получить полуночный UTC, используя -
$date = DateTime('@' . gmmktime(0, 0, 0));
Если вам нужно полночное серверное время, а затем преобразовать выходные данные в часовой пояс пользователя, например, «Европа / Париж», вы должны сделать следующее:
$date = DateTime('@' . mktime(0, 0, 0));
$date->setTimeZone(new DateTimeZone('Europe/Paris'));
print $date->format(DateTime::RFC850) . "\n";
Вы можете преобразовать его в местное время вашего сервера, используя:
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));