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
返回正确日期后
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