返回错误值的PHP日期

返回错误值的PHP日期,php,date,datetime,timezone,Php,Date,Datetime,Timezone,我有一个日期格式,如“Tue May 01 00:00:00+1000 2012”(来自json文件上的数组数据) 当我使用date()函数时,它返回April,:D echo date('F Y', strtotime('Tue May 01 00:00:00 +1000 2012')); //it returning "April 2012" 有没有办法解决这个问题 非常感谢 您需要检查两个时区。或者为date和strotime调用设置一个自定义值 由于您使用+

我有一个日期格式,如“Tue May 01 00:00:00+1000 2012”(来自json文件上的数组数据)

当我使用date()函数时,它返回April,:D

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

      //it returning "April 2012"
有没有办法解决这个问题


非常感谢

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


由于您使用
+1000
作为时区偏移量;我想是澳大利亚吧。您可以使用
date\u default\u timezone\u set()
调用将时区设置为Australia

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'));

这是代码板链接:

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


由于您使用
+1000
作为时区偏移量;我想是澳大利亚吧。您可以使用
date\u default\u timezone\u set()
调用将时区设置为Australia

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'));

这里是代码板链接:

不要使用旧的日期/时间函数,因为它们隐含了您的本地时区,所以会把事情搞得一团糟,请使用:


这也适用于任何日期,无论时区如何(UTC+10小时或其他任何时间)。

不要使用旧的日期/时间函数,因为它们隐式涉及您的本地时区,因此会造成混乱,请使用:


这也适用于任何日期,无论时区(UTC+10小时或其他任何时间)。

您的目标是什么?那么它应该如何显示?请注意提供的日期/时间上的时区规范?当那边是5月1日时,你自己的时区仍然是4月31日。如何修复它?你只需删除
+1000
即可获得你想要的结果,但我不确定这是修复还是破坏了它。Jon,没有4月31日这样的日期。你的目标是什么?那么它应该如何显示?请注意提供的日期/时间上的时区规范?当那边是5月1日时,你自己的时区仍然是4月31日。如何修复它?你可以简单地删除
+1000
来获得你想要的结果,但我不确定这是修复还是破坏了它。Jon.com没有4月31日这样的日期。时区是在输入中内联指定的。@hjpotter92:这只适用于TZ规范为
+1000
-在这种情况下,为什么(全局)更改时区而不是(本地)从字符串中删除+1000?此外,昆士兰目前不观察DST,但它可以在将来这样做(就像过去一样),如果发生这种情况,那么你就有一个bug。因此,即使您想更改TZ,最好将其更改为。@Jon使用
Etc/GMT-10
现在似乎解决了问题:@hjpotter92:Right,-10是正确的。但所有这些解决方案都不尽如人意。我加了一个我自己的答案。时区是在输入中内联指定的。@hjpotter92:这只适用于TZ规范为
+1000
-在这种情况下,为什么(全局)更改时区而不是(本地)从字符串中删除+1000?此外,昆士兰目前不观察DST,但它可以在将来这样做(就像过去一样),如果发生这种情况,那么你就有一个bug。因此,即使您想更改TZ,最好将其更改为。@Jon使用
Etc/GMT-10
现在似乎解决了问题:@hjpotter92:Right,-10是正确的。但所有这些解决方案都不尽如人意。我补充了我自己的答案。