strtotime()只有年份返回错误的数据

时间:2015-04-07 11:11:37

标签: php strtotime

返回正确的日期后

echo date('Y-m',strtotime('2009-3'));

但这只是年度时返回的错误数据

echo date('Y',strtotime('2009'));

显示当前年份。那里有什么问题

1 个答案:

答案 0 :(得分:2)

因为只有" 2009" strtotime()无法创建有效的Unix时间戳。所以你需要传递这样的完整日期:

echo date('Y',strtotime('2009-04-07'));
                       //^^^^^^^^^^

手册中的引用也显示了这一点:

  

函数期望被赋予包含英文日期格式的字符串,并会尝试将该格式解析为Unix时间戳

修改

如果您只有年份,可以使用DateTime::createFromFormat,如下所示:

$date = DateTime::createFromFormat("Y", "2009");
echo $date->format("Y");

输出:

2009