PHP date,获取某时间段以周、月、季度为粒度的时间段数组
date()函数:
PHP date() 参考:https://www.hi-docs.com/php/date.html
Linux date()参考:http://www.cnblogs.com/barrychiao/archive/2012/10/08/2715808.html
获取某时间段以周、月、季度为粒度的时间段数组
1 function getdays($day){//指定天的周一和周天 2 $lastday=date('Y-m-d',strtotime("$day Sunday")); 3 $firstday=date('Y-m-d',strtotime("$lastday -6 days")); 4 return array($firstday,$lastday); 5 } 6 function getmonths($day){//指定月的第一天和最后一天 7 $firstday = date('Y-m-01',strtotime($day)); 8 $lastday = date('Y-m-d',strtotime("$firstday +1 month -1 day")); 9 return array($firstday,$lastday); 10 11 } 12 /** 13 * 输入开始时间,结束时间,粒度(周,月,季度) 14 * @param 参数一:开始时间 15 * @param 参数二:结束时间 16 * @param 参数三:粒度(周,月,季度) 17 * @return 时间段字符串数组 18 */ 19 function get_ld_times($st,$et,$ld){ 20 if($ld=='周'){ 21 $timeArr=array(); 22 $t1=$st; 23 $t2=getdays($t1)['1']; 24 while($t2<$et || $t1<=$et){//周为粒度的时间数组 25 $timeArr[]=$t1.','.$t2; 26 $t1=date('Y-m-d',strtotime("$t2 +1 day")); 27 $t2=getdays($t1)['1']; 28 $t2=$t2>$et?$et:$t2; 29 } 30 return $timeArr; 31 }else if($ld=='月'){ 32 $timeArr=array(); 33 $t1=$st; 34 $t2=getmonths($t1)['1']; 35 while($t2<$et || $t1<=$et){//月为粒度的时间数组 36 $timeArr[]=$t1.','.$t2; 37 $t1=date('Y-m-d',strtotime("$t2 +1 day")); 38 $t2=getmonths($t1)['1']; 39 $t2=$t2>$et?$et:$t2; 40 } 41 return $timeArr; 42 }else if($ld=='季度'){ 43 $tStr=explode('-',$st); 44 $month=$tStr['1']; 45 if($month<=3){ 46 $t2=date("$tStr[0]-03-31"); 47 }else if($month<=6){ 48 $t2=date("$tStr[0]-06-30"); 49 }else if($month<=9){ 50 $t2=date("$tStr[0]-09-30"); 51 }else{ 52 $t2=date("$tStr[0]-12-31"); 53 } 54 $t1=$st; 55 $t2=$t2>$et?$et:$t2; 56 $timeArr=array(); 57 while($t2<$et || $t1<=$et){//月为粒度的时间数组 58 $timeArr[]=$t1.','.$t2; 59 $t1=date('Y-m-d',strtotime("$t2 +1 day")); 60 $t2=date('Y-m-d',strtotime("$t1 +3 months -1 day")); 61 $t2=$t2>$et?$et:$t2; 62 } 63 return $timeArr; 64 }else{ 65 return array('参数错误!'); 66 } 67 }