我正在尝试使用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
答案 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');
答案 1 :(得分:0)
鉴于我的系统上没有出现此问题(Windows机器上的PHP5.3) 我建议你更新到php 5.3。 没有任何缺点,这可能不是您遇到的唯一错误。 我测试了不同的日期格式('1969/12/1','01 Dec,1969',..)并且没有任何问题。 如果问题持续存在,请随意打我;)
答案 2 :(得分:-3)
PHP的Datetime基于unix时间戳,该时间戳从1970年1月1日开始计算。
在此之前,您无法使用DateTime来访问日期。