[英]How to deal with Date and Timezone in PHP with AWS API
我正在使用AWS PHP SDK,而亚马逊的API正在返回以下时间戳。
2013-04-23T13:18:00Z
他们给我的时间戳似乎已经在我的时区。 由于它没有指定它是哪个时区,我猜它被认为是我当地的时间。 ISO 8601的维基站点也声明......
如果没有给出具有时间表示的UTC关系信息,则假定时间是在本地时间。
但是,当我尝试使用它在PHP中像这样被转化成我的本地时区。 PHP的strtotime页面说明了......
除非在该参数中指定了时区,否则此函数的每个参数都使用默认时区。
我的问题是,为什么strtotime将其转换为我的时区,如果它已经在我的时区?
亚马逊返回日期末尾的“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
更新:阅读完整解决方案的所有注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.