因为PHP没有直接提供yyyy-mm-dd hh:ii:ss 这样格式的日期时间进行加减,所以只能通过时间戳来实现。

时间戳是程序换算的标准格式,精确到秒。PHP可以将多种日期格式转换为时间戳,又可以把时间戳转换回各种日期格式,结合这两个特点我们大致实现的步骤有三步,先把原来时间转换成时间戳,然后进行加减,最后转换回日期格式。

当然,这是实现原理,结合PHP函数date()strtotime()两个函数来实现大致也是这个意思,请看实例代码

例子一:

<?php 
/** 
* PHP里的日期加减方法 
*/ 
// 第一步,假设有一个时间 
$a = '2012-04-25 10:10:00'; 
// 第二步,获得这个日期的时间戳 
$a_time = strtotime($a); 
// 第三步,获得加五个月后的时间戳 
$b_time = strtotime('+5 Month',$a_time); 
// 第四部,把时间戳转换回日期格式 
$b = date('Y-m-d H:i:s',$b_time); 
echo '这是加了五个月后的日期'.$b; 
// 如果你觉得以上代码过长也可以一行搞定 
$b = date('Y-m-d H:i:s',strtotime('+'.$time.' Month',strtotime($a))); 
echo '这是加了五个月后的日期'.$b; 
?>

例子二:

//PHP 日期 加减 周  
date("Y-m-d",strtotime("2013-11-12 +1 week"))  ;
//PHP 日期 加减 天数  
date("Y-m-d",strtotime("2013-11-12 12:12:12 +1 day"))  ;
//PHP 日期加减小时  
date("Y-m-d h:i:s",strtotime("2013-11-12 12:12:12 +1 hour"))  ;
//PHP 日期 加减 月数  
date("Y-m-d",strtotime("2013-11-12 12:12:12 +1 month"))  ;
//PHP 日期 加减 分  
date("Y-m-d h:i:s",strtotime("2013-11-12 12:12:12 +1 minute"))  ;
//PHP 日期 加减 秒  
date("Y-m-d h:i:s",strtotime("2013-11-12 12:12:12 +1 second"))  ;