Как я могу преобразовать такую дату: 2012-07-16 01:00:00 +00
(в часовом поясе UTC +00:00
) в часовой пояс UTC +04:00
? Обеспечить правильную передачу летнего времени?
Как конвертировать UTC datetime в другой часовой пояс?
Ответ 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 относится к среднему времени по Гринвичу, которое распространено во всем мире.