使用从 createFromFormat 创建的值添加到 DateTime 不返回预期值

Adding to DateTime with value created from createFromFormat not returning expected value

我正在尝试 PHP 中的 DateTime 功能,但遇到了无法解释的障碍。

给定以下两段代码,我希望它们会输出相同的值 (2001-01-01),但第二段代码却输出从代码 运行(今天是 2016 年 1 月 15 日)。如何让第二个代码块输出期望值?

$date = new DateTime('2001-01-01');
$date->add(new DateInterval('P1Y'));
$date->format('d-m-Y'); // 01-01-2000, works as expected.

$date = new DateTime();
$date->createFromFormat('Y-m-d', '2001-01-01');
$date->add(new DateInterval('P1Y'));
$date->format('d-m-Y'); // 15-01-2016, output not what is expected.

我在 OSX 10.10 上使用 PHP 5.6.4,使用 Homebrew 安装。

首先我没有得到与你相同的输出:

01-01-2002
15-01-2016

第一个示例应该很清楚,您创建了一个 DateTime 对象并向其添加 1 年,因此从 01-01-2001 得到 01-01-2002

第二个也很简单,您只是忘记了从 createFromFormat() 分配值,所以 DateTime 只使用当前日期,例如15-01-2015 并增加 1 年。

所以只要改变这个:

$date->createFromFormat('Y-m-d', '2001-01-01');

对此:

$date = $date->createFromFormat('Y-m-d', '2001-01-01');