如何将UTC日期时间转换为其他时区?
如何将这样的日期:(在时区中)转换为时区?确保夏令时得到正确处理?2012-07-16 01:00:00 +00
UTC +00:00
UTC +04:00
如何将这样的日期:(在时区中)转换为时区?确保夏令时得到正确处理?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('Y-m-d H:i:s'); // 2012-07-15 05:00:00
为了帮助解决该解决方案,您需要获取字符串的最后一部分(偏移部分),并通过简单的查找对其进行查找。您可以使用正则表达式或(也许)来获取offest部分。然后,当您有一个+ 或 - 值时,对可能的时区使用最多24个查找,这些时区可以与PHP的可能时区一起使用 - 如果偏移量相同,谁在乎实际的国家/位置是什么?substr()
使用date_default_timezone_set应用正确的方法。