PHP日期/ strtotime转换为错误的日期

时间:2011-10-21 22:14:44

标签: php datetime date strtotime

在某些情况下,data()会错误地转换我的日期。

我的日期格式如下: Fri Oct 25 15:00:00 EDT 2011

日期字符串来自外部来源,因此我无法更改格式。

// output incorrect - Fri, 28 Oct 2011 15:00:00 -0400
date("r", strtotime("Fri Oct 25 15:00:00 EDT 2011"))

// output correct - Fri, 21 Oct 2011 15:00:00 -0400
date("r", strtotime("Fri Oct 21 15:00:00 EDT 2011"))

我无法弄清楚为什么只改变一天就无法转换。

我的最终目标是创建一个DateTime对象,但它遇到了同样的问题。

// output - Fri Oct 28 19:00:00 EDT 2011
DateTime("Fri Oct 22 19:00:00 EDT 2011")

3 个答案:

答案 0 :(得分:3)

2011年10月25日是星期二。 Strtotime将您的日期字符串解释为“10月25日之后的下一个星期五”,并且正在返回(它认为)正确的答案:10月28日。

因此,GIGO规则适用。你正在吃垃圾,想知道你为什么要把垃圾扔掉。

答案 1 :(得分:0)

您传入strtotime的价值不符合。 2011年没有星期五。

http://www.timeanddate.com/calendar/monthly.html

答案 2 :(得分:0)

date()运行正常。 问题是,在输出错误的示例中,指定日期不是星期五

如果始终为Fri,您可以删除前4个字符。