$datenow = new DateTime();
$dn = $datenow -> format("Y-m-d"); //2014-12-02
$yesterday = $datenow -> sub(new DateInterval('P1D')) -> format("Y-m-d"); //2014-12-01
$yestertwo = $datenow -> sub(new DateInterval('P2D')) -> format("Y-m-d"); //2014-11-29
$tomorrow = $datenow -> add(new DateInterval('P1D')) -> format("Y-m-d"); //2014-11-30
$tomotwo = $datenow -> add(new DateInterval('P2D')) -> format("Y-m-d"); //2014-12-02
我不得不在这里遗漏一些东西。日期计算似乎已关闭。
更新
$datenow = new DateTime();
$dn = $datenow -> format("Y-m-d");
$yesterday = $datenow -> sub(new DateInterval('P1D')) -> format("Y-m-d");
$yestertwo = $datenow -> sub(new DateInterval('P1D')) -> format("Y-m-d");
$tomorrow = $datenow -> add(new DateInterval('P3D')) -> format("Y-m-d");
$tomotwo = $datenow -> add(new DateInterval('P1D')) -> format("Y-m-d");
现在输出正确的日期。然而,乍一看,它看起来有点混乱和难以理解。任何解决方案?
答案 0 :(得分:3)
每次$datenow
/ sub
,您都修改 add
,因此您实际上正在改变今天的"" #34;装置
答案 1 :(得分:1)
正如@ceejayoz所提到的,当您在add
对象上致电sub
或DateTime
时,您也会对其进行修改。
从PHP 5.5开始,有一个新类:DateTimeImmutable
。这个类也有像add
和sub
这样的方法,但它不是修改原始类,而只是返回一个应用了修改的新对象。
将$datenow = new DateTime();
替换为$datenow = new DateTimeImmutable();
,事情就应该开始了。