Я пытаюсь получить местное время в различных часовых поясах для процесса часов - например, сейчас в Великобритании это 09.07 28 декабря.
Я создал две функции, чтобы помочь с этим:
function dateLocal($timezone='Europe/London') {
$date = date("Y-m-d");
$given = new DateTime($date, new DateTimeZone("UTC"));
$given->setTimezone(new DateTimeZone($timezone));
$output = $given->format("Y-m-d");
return $output;
}
function dateTimeLocal($timezone='Europe/London') {
$datetime=date("Y-m-d H:i:s");
$given = new DateTime($datetime, new DateTimeZone("UTC"));
$given->setTimezone(new DateTimeZone($timezone));
$output = $given->format("Y-m-d H:i:s");
return $output;
}
Я использую Гонолулу в качестве примера, так как дата «вчера» для целей тестирования.
Если я получаю только дату, она отлично работает:
echo dateLocal("Pacific/Honolulu");
2018-12-27
Тем не менее, если я хочу вернуть дату и время, он возвращает неверно:
wcho dateTimeLocal("Pacific/Honolulu");
2018-12-28 00:07:23
Я ожидаю, что он вернется:
2018-12-27 23:07:23
Почему они возвращают разные значения?