PHP获取指定时间段之间的 年,月,天,时,分,秒
核心代码:
ClassUtils{
/**
*formatMySQLDateTime(YYYY-MM-DDhh:mm:ss)把mysql中查找出来的数据格式转换成时间秒数
*@paramstring$datetime
*/
publicfunctionfmDatetime($datetime){
$year=substr($datetime,0,4);
$month=substr($datetime,5,2);
$day=substr($datetime,8,2);
$hour=substr($datetime,11,2);
$min=substr($datetime,14,2);
$sec=substr($datetime,17,2);
returnmktime($hour,$min,$sec,$month,$day,0+$year);
}
/**
*
*根据俩个时间获取俩个时间的包含的年,月数,天数,小时,分钟,秒
*@paramString$start
*@paramString$end
*@returnArrayObject
*/
privatefunctiondiffDateTime($DateStart,$DateEnd){
$rs=array();
$sYear=substr($DateStart,0,4);
$eYear=substr($DateEnd,0,4);
$sMonth=substr($DateStart,5,2);
$eMonth=substr($DateEnd,5,2);
$sDay=substr($DateStart,8,2);
$eDay=substr($DateEnd,8,2);
$startTime=$this->fmDatetime($DateStart);
$endTime=$this->fmDatetime($DateEnd);
$dis=$endTime-$startTime;//得到俩个时间的秒数
$d=ceil($dis/(24*60*60));//得到天数
$rs['day']=$d;//天数
$rs['hour']=ceil($dis/(60*60));//小时
$rs['minute']=ceil($dis/60);//分钟
$rs['second']=$dis;//秒数
$rs['week']=ceil($d/7);//周
$tem=($eYear-$sYear)*12;//月份
$tem1=$eYear-$sYear;//年
if($eMonth-$sMonth<0){//月份相减为负
$tem+=($eMonth-$sMonth);
}elseif($eMonth==$sMonth){//月份相同
if($eDay-$sDay>=0){
$tem++;
$tem1++;
}
}elseif($eMonth-$sMonth>0){//月份相减正负
$tem1++;
if($eDay-$sDay>=0){//且日期相减为正数
$tem+=($eMonth-$sMonth)+1;
}else{
$tem+=($eMonth-$sMonth);
}
}
$rs['month']=$tem;
$rs['year']=$tem1;
return$rs;
}
}
一年多一天,返回的是2年,一个月多一天返回的是2个月,以此推......项目需要,才做此出来,开始我也到网上找这样的例子,但大家都是把年就按365天来算,月就按30天来算,这样算出来的结果肯定是没用的,年有可能是366天,月有可能是31,29,28都有可能