字符串的日期转换返回第2个月(2月)的错误值:
$dtformat = 'Y-m-01';
$curDate = DateTime::createFromFormat('Y-m', '1996-02');
print_r($curDate);
$dt = $curDate->format($dtformat);
echo $dt."\n";
而不是“1996-02-01”,它返回“1996-03-01”.这是$currDate数组:
DateTime Object (
[date] => 1996-03-02 01:19:01
[timezone_type] => 3
[timezone] => America/New_York
)
所有其他月份工作正常.我在这里错过了什么?
谢谢!
解决方法:
原因:当我们没有为createFromFormat提供日期时,默认情况下它将作为今天的日期.所以在这种情况下它将是1996-02-31,它不存在&因此下个月需要.
解决方案:需要提供一天避免这种情况.
$date = "2011-02";
echo $date."\n";
$d = DateTime::createFromFormat("Y-m-d",$date."-01");
echo $d->format("Y-m");