strtotime() 只有 return 年的错误数据

strtotime() with only year return wrong data

返回正确日期后

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

但是这返回错误的数据时

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

这显示的是当年。哪里不对

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

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

手册中的引述也说明了这一点:

The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp

编辑:

如果只有年份可以使用DateTime::createFromFormat,像这样:

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

输出:

2009