如何将这样的日期转换为2012-07-16 01:00:00 +00
(它位于UTC +00:00
时区)到UTC +04:00
时区?确保正确处理夏令时?
答案 0 :(得分:42)
$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
答案 1 :(得分:0)
要帮助解决方案,您需要获取字符串的最后一部分(偏移部分)并查找简单的查找。您可以使用正则表达式或substr()
(可能)来获取最佳部分。然后,当你有一个+或 - 值时,对可能的时区使用最多24次查找,你可以使用PHP timezones - 如果偏移相同,谁在乎实际的国家/地点是什么?
使用date_default_timezone_set来应用正确的。
答案 2 :(得分:-2)
您也可以使用GMT时间,然后将其转换为您的要求
<?php
echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998));
?>
格林威治标准时间指格林威治标准时间,这在全世界都很常见。