Как я могу конвертировать дату следующим образом: 2012-07-16 01:00:00 +00
(это в часовой пояс UTC +00:00
) в UTC +04:00
часовой пояс? Обеспечить правильное обращение с летним днем?
Используйте DateTime
и DateTimeZone
.
$date = new DateTime('2012-07-16 01:00:00 +00'); $date->setTimezone(new DateTimeZone('Europe/Moscow')); // +04 echo $date->format('Ymd H:i:s'); // 2012-07-15 05:00:00
Чтобы помочь с решением, вам нужно получить последнюю часть строки (смещение) и посмотреть ее на простой поиск. вы можете использовать регулярное выражение или substr()
(возможно), чтобы получить ту часть. Затем, когда у вас есть + или – значение, используйте максимум 24 запросов против возможных часовых поясов, которые вы можете использовать с возможными часовыми поясами PHP – если смещение одинаковое, кто заботится о том, какова фактическая страна / местоположение?
Используйте date_default_timezone_set, чтобы применить правильный.
Вы также можете использовать время по Гринвичу и затем преобразовать его в свое требование
<?php echo gmdate("M d YH:i:s", mktime(0, 0, 0, 1, 1, 1998)); ?>
GMT относится к среднему времени по Гринвичу, которое распространено во всем мире.