<?php
PHP获取指定时间段之间的 年,月,天,时,分,秒
Class Utils {
/**
* format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出来的数据格式转换成时间秒数
* @param string $datetime
*/
publicfunction fmDatetime($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);
}
/**
*
* 根据俩个时间获取俩个时间的 包含的 年,月数,天数,小时,分钟,秒
* @param String $start
* @param String $end
* @return ArrayObject
*/
privatefunction diffDateTime($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都有可能
[php] view plain copy
$start = '1478863624';
$end = '1480505248';
function getweek($start, $end)
{
$ret = array();
$i = 0;
while($start <= $end){
$ret[$i]['start'] = date('Y-m-d',$start);
$tmp = strtotime("+6 days",$start);
if($end <= $tmp)
$ret[$i]['end'] = date('Y-m-d',$end);
else
$ret[$i]['end'] = date('Y-m-d',$tmp);
$i++;
$start = strtotime("+1 day",$tmp);
}
return $ret;
}
结果:
[php] view plain copy
Array
(
[0] => Array
(
[start] => 2016-11-11
[end] => 2016-11-17
)
[1] => Array
(
[start] => 2016-11-18
[end] => 2016-11-24
)
[2] => Array
(
[start] => 2016-11-25
[end] => 2016-11-30
)
)
php获取某段时间内每个月的方法,返回由这些月份组成的数组
06 | function monthList( $start , $end ){ |
07 | if (! is_numeric ( $start )||! is_numeric ( $end )||( $end <= $start )) return '' ; |
08 | $start = date ( 'Y-m' , $start ); |
09 | $end = date ( 'Y-m' , $end ); |
11 | $start = strtotime ( $start . '-01' ); |
12 | $end = strtotime ( $end . '-01' ); |
17 | $d [ $i ]=trim( date ( 'Y-m' , $start ), ' ' ); |
18 | $start += strtotime ( '+1 month' , $start )- $start ; |