2

我在将我从 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 中的日期是七月二日。有谁知道为什么会这样?我错过了什么重要的东西吗?非常感谢任何帮助!

4

2 回答 2

4

我认为您应该使用DateTime。它不依赖于主机 TimeZone。除了格式是有效的 ISO8601。所以 DateTime 根本没有问题。

$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

于 2012-05-01T15:28:26.317 回答
-1

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

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

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

于 2012-05-01T15:29:10.320 回答