使用 PHP 从 JSON 字符串转换时间


Convert time from JSON string with PHP

>我在将我从 JSON 获得的时间字符串转换为另一种格式时遇到问题。不知何故,日期设置为负 24 小时。这是来自 JSON 的对象

 [date] => 2011-07-02T00:00:00+02:00

我正在使用strtotime()date()

date('l, d F Y', strtotime($day->date));

但输出看起来像这样

FRIDAY, 01 JULY 2011

显然,JSON 中的日期是 7 月 2 日。有谁知道为什么会这样?我错过了什么重要的东西吗?将非常感谢任何帮助!

我认为你应该使用DateTime。它不依赖于主机时区。旁边是有效的ISO8601。所以日期时间根本没有问题。

$dt = new DateTime("2011-07-02T00:00:00+02:00");
echo $dt->format("l, d F Y"); 
// Echos Saturday, 02 July 2011

http://ideone.com/yPp4d

PHP 无法理解无限的时间/日期字符串数组。对人类来说"显而易见"的东西,对计算机来说并不那么明显。如果没有针对该确切日期格式的特定解析器,计算机语言如何理解示例中T的用途?

PHP

strtotime 格式将向您展示 PHP 可以将字符串转换为时间或日期对象的格式。

即使日期/时间解析正确,您的 +0200 tzcorrection也会告诉 PHP 更正 GMT + 2 小时的时区差异,这可能不是您的正确时区偏移量,从而给您带来错误。