PHP DateTime->格式错误的月份

时间:2017-07-31 17:10:11

标签: php

此代码:     

$expDateObj = DateTime::createFromFormat('m/y', '04/19');
echo $expDateObj->format('Y-m');

echo "<br/>";

$expDateObj = DateTime::createFromFormat('m/y', '05/19');
echo $expDateObj->format('Y-m');

产生这个结果:

2019-05
2019-05

为什么?

修改 我在http://phptester.net/

上使用PHP 7.0获得了上述内容

1 个答案:

答案 0 :(得分:4)

当缺少日期的某一部分时,PHP会将缺失的日期默认为当天。今天是7月31日,因此它会使用31作为日期,为您的31st April 2019条目04-19提供...不存在,因此它会转到{{1} }。因此,您的最终结果为1st May 2017

您可以通过稍微更改掩码强制PHP将缺失的日期默认为该月的第一天(2019-05)而不是当前日期:

01