如何将UTC日期时间转换为另一个时区?

时间:2012-08-09 12:44:23

标签: php datetime timezone

如何将这样的日期转换为2012-07-16 01:00:00 +00(它位于UTC +00:00时区)到UTC +04:00时区?确保正确处理夏令时?

3 个答案:

答案 0 :(得分:42)

使用DateTimeDateTimeZone

$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));
?>

格林威治标准时间指格林威治标准时间,这在全世界都很常见。