date()仅从日期格式YYYY-00-00开始

时间:2012-02-23 18:43:36

标签: php date

我尝试执行此操作echo date("Y", strtotime("1999-00-00"));但不是1999而是返回1998。有办法怎么处理这个?我更喜欢“干净的方式”,而不是$finalYear = (float)$year+1等。 日期格式必须是YYYY-00-00(带零)

4 个答案:

答案 0 :(得分:6)

如果您完全确定日期的格式永远不会改变,那么

会更好
echo substr('1999-00-00', 0, 4);

而不是在整个日期/时间子系统中引发strtotime()和往返的繁重开销。

当你告诉PHP的日期函数时,月/日是0,这是“无效”,它会将它们转换为适当的“之前”值。

e.g。

1999-00-10 is actually 1998-12-10
1999-11-00 is actually 1999-10-31

等等。这就像说“昨天”或“上个月”。同样,指定第13个月就可以了

1999-13-01 is actually 2000-01-01

答案 1 :(得分:2)

这可能是因为00不是有效月份。最早的月份是01。与日相同。

echo date('Y', strtotime('1999-01-01'));

也许在您检索要解析的日期的任何地方都应该进行更改?

答案 2 :(得分:1)

由于今年的第一个合法日是YYYY-01-01,我认为你所引用的'不干净'方式在这里是完全合理的。

或者,如果strtotime()的参数是你从用户输入中得到的,那么使用substr()提取前四位数会更好。

答案 3 :(得分:-2)

获得1999年的唯一方法是

echo date( "Y", strtotime( "1999" ) );