Подтвердить что ты не робот

Как конвертировать UTC datetime в другой часовой пояс?

Как я могу преобразовать такую ​​дату: 2012-07-16 01:00:00 +00 (в часовом поясе UTC +00:00) в часовой пояс UTC +04:00? Обеспечить правильную передачу летнего времени?

4b9b3361

Ответ 1

Используйте DateTime и DateTimeZone.

$date = new DateTime('2012-07-16 01:00:00 +00');
$date->setTimezone(new DateTimeZone('Europe/Moscow')); // +04

echo $date->format('Y-m-d H:i:s'); // 2012-07-15 05:00:00 

Ответ 2

Чтобы помочь в решении, вам нужно получить последнюю часть строки (смещение) и посмотреть ее на простой поиск. вы можете использовать регулярное выражение или substr() (возможно), чтобы получить ту часть. Затем, когда у вас есть + или - значение, используйте максимум 24 запросов против возможных часовых поясов, которые вы можете использовать с возможностью PHP timezones - если смещение одинаковое, кто заботится о том, какова фактическая страна/местоположение?

Используйте date_default_timezone_set, чтобы применить правильный.

Ответ 3

Вы также можете использовать время по Гринвичу и затем преобразовать его в свое требование

<?php
echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998));
?>

GMT относится к среднему времени по Гринвичу, которое распространено во всем мире.