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 }