我有以下日期字符串
$date="Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)"
我想将其转换为UTC时间
$timestamp_UNIX = strtotime($date);
echo date("Y-m-d\TH:i:s\Z",$timestamp_UNIX);
为什么我
2011-04-30T11:47:47Z
and not
2011-04-30T09:47:47Z
答案 0 :(得分:2)
问题是你的代码不会自动回应UTC。无论您的默认时区设置为何时,它都会回显时间戳。这可以在运行时通过date_default_timezone_set()
或通过php.ini
中的配置设置date.timezone
完成。
现代方式是使用DateTime
和DateTimeZone
类。
$d = new DateTime('Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)');
print_r($d);
$d->setTimezone(new DateTimeZone('UTC'));
print_r($d);
打印
DateTime Object
(
[date] => 2011-04-30 18:47:47
[timezone_type] => 1
[timezone] => +09:00
)
DateTime Object
(
[date] => 2011-04-30 09:47:47
[timezone_type] => 3
[timezone] => UTC
)
答案 1 :(得分:1)
您应该使用gmdate()
而不是date()
(或者您可以在PHP 5.2 / 5.3中检查DateTime和DateTimeZone类)