2013-04-26 109 views
0

我有一个日期格式,像这样“周二5月01 00:00:00 +1000 2012”(来自JSON文件阵列数据)PHP日期返回错误值

当我使用它返回四月date()函数,:D

 echo date('F Y', strtotime('Tue May 01 00:00:00 +1000 2012')); 

     //it returning "April 2012" 

任何想法如何解决这个问题?

非常感谢!

+0

你的目标是什么?它应该如何显示呢? – 2013-04-26 23:23:17

+3

请注意所提供日期/时间的时区规格?当它在5月1日那里时,它仍然是4月31日在你自己的时区。如何解决它?你可以简单地删除'+ 1000'来获得你想要的结果,但我不确定这是否修复或打破它。 – Jon 2013-04-26 23:24:59

+0

乔恩,4月31日没有这样的约会。 – CommaToast 2014-06-06 00:49:41

回答

2

而不是使用旧的日期/时间函数,把事情搞得一团糟,因为他们含蓄地涉及到当地时区,使用DateTime

$date = new DateTime('Tue May 01 00:00:00 +1000 2012'); 
echo $date->format('F Y'); 

无论时区(UTC + 10小时还是其他任何地方),这也可以用于任何日期的正确工作。

+0

太棒了!谢谢 – Omar 2013-04-27 00:19:46

2

您将需要检查两个时区。或者为datestrtotime调用设置一个自定义调用。


由于您使用+1000作为您的时区偏移量;我假设它是澳大利亚。您可以使用date_default_timezone_set()电话将时区设置为澳大利亚

echo date('F Y', strtotime('Tue May 01 00:00:00 +1000 2012')); 
date_default_timezone_set('Australia/Queensland'); 
echo date('F Y', strtotime('Tue May 01 00:00:00 +1000 2012')); 

这里是键盘链接:http://codepad.org/tPC8DEQp

+0

无关紧要。时区在输入中内联指定。 – Jon 2013-04-26 23:25:37

+0

@Jon更新回复。 – hjpotter92 2013-04-26 23:33:39

+0

它的工作原理! :D非常感谢@ hjpotter92 – Omar 2013-04-26 23:38:52