Отформатируйте время с часовым поясом по местному времени в переполнении стека

Как можно изменить время, которое предоставляется с часовым поясом (например. 14:00:00+02:00) по местному времени (результат будет 16:00:00) когда даты не указаны.
Я попробовал это с DateTime учебный класс. Но так как я работаю только со временем, а не с датами, это не всегда дает правильные результаты:

$time = '14:00:00+02:00';
$datetime = new DateTime($date);
$result = $datetime->format("H:i:s");

1

Решение

Используйте DateTime’s setTimezone метод. Это автоматически изменит время, чтобы соответствовать часовому поясу.

$date = new DateTo,e("2017-02-02 10:00:00", new DateTimeZone("+0200"));
$date->setTimezone(new DateTimeZone("-0200"));
var_dump($date->format("H:i:s"));

Будет выводить следующее:

string '06:00:00' (length=8)
0

Другие решения

$utc = new DateTimeZone("UTC");
$zone = new DateTimeZone("YOUR_TIME_ZONE");
$date = new DateTime("14:00:00+02:00", $utc);
$date->setTimezone($zone);
echo $date->format('Y-m-d H:i:s');
0

Вы можете использовать функцию setTimezone ()

$time = '14:00:00+02:00';
$datetime = new DateTime($time);
$result = $datetime->format("H:i:s");
echo $result;
echo '<br>';
$datetime->setTimezone(new DateTimeZone('Your_local_timezone')); // ex: UTC (+00h00) or Europe/Moscow (+4h00)
$result = $datetime->format("H:i:s");
echo $result;
0

Вы должны указать свой часовой пояс и сообщить DateTime использовать часовые пояса
например:

$time = '14:00:00+02:00';
$datetime = DateTime::createFromFormat('H:i:s+T', $time);
$datetime->setTimezone(new DateTimeZone('Europe/Warsaw'));
$result = $datetime->format("H:i:s");

echo($result);

использование +T в шаблоне формата, чтобы сказать, что php дата содержит часовой пояс, на следующем шаге вы должны установить свой часовой пояс, используя setTimezone, Например я установил 'Europe/Warsaw' но ничего не происходит, потому что +02: 00 CEST это равно 'Europe/Warsaw'

Другой способ меняется +02:00 для обозначения часового пояса вот пример:

$time = '14:00:00 (UTC)';
$datetime = new DateTime($time);

$datetime->setTimezone(new DateTimeZone('Europe/Warsaw'));
$result = $datetime->format("H:i:s");

echo($result);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector