PHP5 以后的 DateTime 是一个强大的事件处理对象,現在我来整理一下常用的一些时间日期增减方式。
获取当前时间
| 1 2 3 | $date = new DateTime('2000-01-01'); // OR $date = new DateTime('now'); | 
增加10天
用 DateInterval 与 DateTime::add()
| 1 2 3 4 | $date   = new DateTime('2000-01-01'); $day    = new DateInterval('P10D'); // P开头代表日期,10D 代表 10 天 $date->add($day);  echo $date->format('Y-m-d') ; | 
用 DateTime::modify()
| 1 2 3 | $date = new DateTime('2006-12-12'); $date->modify('+10 day'); echo $date->format('Y-m-d'); | 
减少一个月
| 1 2 3 4 | $date = new DateTime('2000-12-31'); $date->modify('-1 month'); echo $date->format('Y-m-d') ; | 
用 DateInterval 增加两年四天六小时又八分
| 1 2 3 4 | $date   = new DateTime('2000-01-01'); $day    = new DateInterval('P2Y4DT6H8M'); // 两年四天六小時又八分,中间的 T 是时间的意思 $date->add($day);  echo $date->format('Y-m-d') ; | 
DateInterval 的写法说明
| 1 2 3 4 5 6 7 8 9 | new DateInterval('P1Y2M3D'); // P开头表示日期,一年二個月又三天 new DateInterval('PT4H5M6S'); // T开头表示時間,四小時五分又六秒 new DateInterval('P1Y2M3DT4H5M6S'); // 合并起來,一年二个月三天四小時五分又六秒 new DateInterval('P3M'); // 三个月 new DateInterval('PT1H'); // 一小时 | 
两个时间相减计算出天数
| 1 2 3 4 5 | $datetime1 = new DateTime('2013-12-23 16:13:08'); $datetime2 = new DateTime('2012-11-22 12:05:07'); $interval = $datetime1->diff($datetime2); echo $interval->format('%d天%H小时%i分%s秒');  //输出时间字符串 echo $interval->days;   //输出两个日期相差天数 | 
$datetime1->diff()方法会返回DateInterval对象,具体细节可查看 php DateInterval 手册。
注意:
| 1 2 3 4 | $date=new \DateTime(); $time1=$date; $day=new DateInterval('P5D'); $time2=$date->add($day); | 
你会发现,输出的$time1 和 $time2是一样的。这很好处理,我们只需要加上clone 即可
| 1 2 3 4 | $date=new \DateTime(); $time1=clone $date; $day=new DateInterval('P5D'); $time2=$date->add($day); | 
这时$time1和$time2就不同步了
