我正在玩PHP中的DateTime功能,而且我遇到了无法解释的绊脚石。
考虑到以下两段代码,我希望它们会输出相同的值(2001-01-01),但第二块代码会输出代码运行之日起1年(所以今天,15-01-2016)。如何让第二个代码块输出预期值?
$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安装。
答案 0 :(得分:2)
首先我没有得到与你相同的输出:
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');