如何使用AWS API处理PHP中的日期和时区

时间:2013-04-23 20:53:50

标签: php amazon-web-services

我正在使用AWS PHP SDK,而亚马逊的API正在返回以下时间戳。

2013-04-23T13:18:00Z

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

  

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

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

  

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

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

1 个答案:

答案 0 :(得分: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

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