使用从 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');
我正在尝试 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');