1

我正在使用 AWS PHP 开发工具包,亚马逊的 API 在下面返回这个时间戳。

2013-04-23T13:18:00Z

他们给我的时间戳似乎已经在我的时区。由于它没有指定它是哪个时区,我想它被假定为我的当地时间。ISO 8601 的 wiki 站点还声明...

如果没有给出带有时间表示的 UTC 关系信息,则假定时间为本地时间。

但是当我尝试像这样在 PHP 中使用它时,它会将它转换为我的本地时区。PHP 的 strtotime 页面这样说...

此函数的每个参数都使用默认时区,除非在该参数中指定了时区。

我的问题是,如果 strtotime 已经在我的时区中,为什么要将其转换为我的时区?

4

1 回答 1

2

亚马逊返回的日期末尾的“Z”表示它是 UTC。您将需要转换时区以使其本地化。您可以通过执行以下操作来做到这一点:

<?php

$date = new DateTime('2013-04-23T13:18:00Z'); // Z = UTC
echo $date->format('H') . PHP_EOL;
//> 13
$date->setTimezone(new DateTimeZone('America/Los_Angeles')); // -0700
echo $date->format('H') . PHP_EOL;
//> 06

更新:阅读所有评论以获取完整解决方案。

于 2013-04-23T21:43:11.137 回答