【发布时间】:2015-12-12 07:22:42
【问题描述】:
我有以下格式的日期字符串:
$received = "Tue, 15 Sep 2015 12:35:03 +0000 (UTC)";
我想将其转换为欧洲/伦敦时区,因为实际时间应该是 13:35:03
有什么想法可以做到这一点吗?
谢谢
【问题讨论】:
-
也许你想接受我的回答?如果结果输出正确。
我有以下格式的日期字符串:
$received = "Tue, 15 Sep 2015 12:35:03 +0000 (UTC)";
我想将其转换为欧洲/伦敦时区,因为实际时间应该是 13:35:03
有什么想法可以做到这一点吗?
谢谢
【问题讨论】:
当前/正确的方法:
$received = "Tue, 15 Sep 2015 12:35:03 +0000 (UTC)";
$date = new DateTime($received);
echo $date->format('c'); // 2015-09-15T12:35:03+00:00
$date->setTimezone(new DateTimeZone('Europe/London'));
echo $date->format('c'); // 2015-09-15T13:35:03+01:00
您从字符串构建 DateTime 对象,然后更改时区。
【讨论】:
设置一个新的时区也许你想动态设置它然后从数据库中设置新的日期时间:
$received = "Tue, 15 Sep 2015 12:35:03 +0000 (UTC)";
$tz = new DateTimeZone('Europe/London');
$date = new DateTime($received);
$date->setTimezone($tz);
echo $date->format('H:i:s');
输出是:
13:35:03
【讨论】:
希望这有助于您创建 DateTime 对象然后转换时区 当您更改时区后显示时,它将显示正确的时间。
$t = new DateTime($received);
date_timezone_set($t, timezone_open('Europe/London'));
echo date_format($t, 'Y-m-d H:i:sP');
【讨论】: