Home  >  Article  >  php教程  >  PHP日期时间加减程序代码详解

PHP日期时间加减程序代码详解

WBOY
WBOYOriginal
2016-06-13 10:04:221184browse

今天我们来看在php中计算两个时间之间的时间差,下面我们直接使用了data,strtotime与time三个函数就实现了,有需要的朋友可参考。

今天要讲的这个例子,需求是这样的。得知某个日期时间,

如:2012-04-25 10:10:00

我要在这个日期时间的基础上加上5个月并返回处理后的日期

结果:2012-04-25 10:10:00 加5个月等于 2012-09-25 10:10:00


结合PHP函数date()与strtotime()两个函数来实现大致也是这个意思,

 代码如下 复制代码

/**
 * 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;
?>

常用的计算时间

 代码如下 复制代码

date_default_timezone_set('PRC'); //默认时区 
echo "今天:",date("Y-m-d",time()),"
"; 
echo "今天:",date("Y-m-d",strtotime("18 june 2008")),"
"; 
echo "昨天:",date("Y-m-d",strtotime("-1 day")), "
"; 
echo "明天:",date("Y-m-d",strtotime("+1 day")), "
"; 
echo "一周后:",date("Y-m-d",strtotime("+1 week")), "
"; 
echo "一周零两天四小时两秒后:",date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "
"; 
echo "下个星期四:",date("Y-m-d",strtotime("next Thursday")), "
"; 
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."
"; 
echo "一个月前:".date("Y-m-d",strtotime("last month"))."
"; 
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."
"; 
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."
"; 
?>

输出结果

今天:2013-06-07
今天:2008-06-18
昨天:2013-06-06
明天:2013-06-08
一周后:2013-06-14
一周零两天四小时两秒后:2013-06-16 18:18:29
下个星期四:2013-06-13
上个周一:2013-06-03
一个月前:2013-05-07
一个月后:2013-07-07
十年后:2023-06-07

这些再看一些日期加减函数

 代码如下 复制代码

//获取当天的星期(1-7)
function GetWeek($times)
{
$res = date('w', strtotime($times));
if($res==0)
$res=7;
return $res;
}
//获取当天时间
function GetTime($times)
{
$res = date('H:i', strtotime($times));
return $res;
}
//获取现在过几月的的时间
function GetMonth($Month,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$Month months"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$Month months"));
return $res;
}
//获取当前时间
function GetCurrentDateTime()
{
$res=date("Y-m-d H:i:s",time());
return $res;
}
//获取当前时间隔几小时之前或之后的时间
function GetDiffHours($hours,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$hours hour"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$hours hour"));
return $res;
}
//间隔几分钟之前或之后的时间
function GetDiffMinute($Minute,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$Minute minute"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$Minute minute"));
return $res;
}
//间隔几秒之前或之后的时间
function GetDiffSec($sec,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$sec second"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$sec second"));
return $res;
}

//间隔几个星期之前或之后的时间
function GetDiffWeek($Week,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$Week week"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$Week week"));
return $res;
}
// 间隔几天之间的时间
function GetDiffDays($days,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$days day"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$days day"));
return $res;
}
//间隔几年之前或之后的时间
function GetDiffYears($year,$type='l')
{
if(!strcmp($type,'b'))
$res=date("Y-m-d H:i:s",strtotime("-$year year"));
if(!strcmp($type,'l'))
$res=date("Y-m-d H:i:s",strtotime("+$year year"));
return $res;
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn