php datetime对象1960年限制

时间:2010-12-13 15:36:49

标签: php datetime

我正在尝试使用php datetime对象来处理日期。

这是我的代码:

$date = new DateTime('01 Dec, 1969');
echo $date->format('Y-m-d');

以上代码返回2010-12-01

但如果我从1969年改为1945年或者不到1960年的任何年份,那么代码将返回错误的年份。例如:

此代码:

$date = new DateTime('01 Dec, 1950');
echo $date->format('Y-m-d');

返回     2011-01-30

3 个答案:

答案 0 :(得分:3)

This is likely a bug. Consider filing it to the bugtracker

将输入格式更改为

$date = new DateTime('Dec 1st, 1950');
echo $date->format('Y-m-d');

PHP将正确地将其变为

1950-12-01

请参阅http://codepad.org/trFfB6Q1


从PHP5.3起,您还可以使用DateTime::createFromFormat创建日期。这将适用于您原来的DateTime字符串:

$date = DateTime::createFromFormat('d M, Y', '01 Dec, 1950');
echo $date->format('Y-m-d');

请参阅http://codepad.viper-7.com/08kK5M

答案 1 :(得分:0)

鉴于我的系统上没有出现此问题(Windows机器上的PHP5.3) 我建议你更新到php 5.3。 没有任何缺点,这可能不是您遇到的唯一错误。 我测试了不同的日期格式('1969/12/1','01 Dec,1969',..)并且没有任何问题。 如果问题持续存在,请随意打我;)

答案 2 :(得分:-3)

PHP的Datetime基于unix时间戳,该时间戳从1970年1月1日开始计算。

在此之前,您无法使用DateTime来访问日期。