PHP 获取 特定时间范围 类

目录

   前序

  用途

  功能及事项

  使用方法

  代码及注释

 

前序:

  总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,我也不会学这么多,这 2年来,几乎所有的服务器接口都也是 由我一手操办,用的是 pHp,我是在很不愿意的情况下完成这个类的,因为 项目分工的 后台程序员,没完善这块,所以等不了他了,只能自己来搞,但这样自己的任务时间就少了。这个类的功能还是挺强大的,适合很多地方。 Whatever,enjoy this `Class`.

 

用途:

  按照时间范围生成 sql 语句,然后以此获取改时间范围内的数据集合,常见的功能模块含有此类数据的有:曲线图,图标的数据按照时间显示;数据按照日期排序显示。对于这部分的功能数据返回,一半是由负责服务器后台的人来完成的,我们移动前端开发者,只需要调用接口就可以了。

 

功能及事项:

  1,使用后产生的是,要查找的时间范围,根据传入参数选择生产,也可以组合 sql 语句返回,本例就是;

  2,已实现:

      1) 按 日 生成范围 

      2)按周 生成范围

      3)按月 生成范围

      4)按年 生成范围

  3,所用语言是 php,服务器解析需要安装 Apache,或者 Nginx;

  4,格式是时间戳,切记,拥有时间戳,就可以任意处理,可以生产这种日期时间格式: 2016-7-08 12:1:3;

  5,常见的使用场景是,根据 时间范围 搜索数据;

  6,我会提供一个链接供大家直接点击看 输出效果。

 

使用方法:

 $controller =new TimeRangeHelper();  // 实例化
$func =$_REQUEST['func']; // 以 get 的方式或者 post 的方式 传入要调用的 函数名称
$controller->$func(); // 这里就会自动调用了

例如:
   链接xxx ?func=
RangeTest
试一试?
     点击我就能看到啦
 就可以看到
   PHP 获取 特定时间范围 类_第1张图片

代码及注释:

 

  1 php
  2 /**
  3  * Created by PhpStorm.
  4  * Author: 林冠宏
  5  * Date: 2016/6/4
  6  * Time: 16:06
  7  *
  8  * 前序:
  9  *     总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,
 10  * 我也不会学这么多,这么 2年来,几乎素有的服务器接口都也是 由我一手操办,用的是 pHp,目前大三,
 11  * 我是在很不愿意的情况下完成这个类的,因为 项目分工的 后台程序员,没完善这块,我来搞,时间就不
 12  * 够了。 Whatever,enjoy this `Class`.
 13  *
 14  * 功能:
 15  *      1,产生 要查找的 时间范围
 16  *      2,格式是 时间戳,拥有时间戳,可以任意处理
 17  *      3,常见的使用场景是,根据 时间范围 搜索数据
 18  */
 19 
 20 class TimeRangeHelper{
 21 
 22     /** 一天 和 一周的时间轴 大小是肯定的,月的天数不能确定,年也是,故不作定义 */
 23     private $DayTime  ;
 24     private $WeekTime ;
 25     private $openLog  ; /** 是否开启调试信息输出 */
 26 
 27     function TimeRangeHelper(){
 28         $this->DayTime  = 24*60*60;
 29         $this->WeekTime = 7*24*60*60;
 30         $this->openLog  = true;
 31     }
 32 
 33     /** 整体测试函数 */
 34     public function RangeTest(){
 35         /** 日 测试 */
 36         $this->GetTimeRang("日","2016-6-5");
 37         $this->GetTimeRang("日");
 38         $this->GetTimeRang("日","2015-6-1");
 39         echo "
"; 40 /** 周 测试 */ 41 $this->GetTimeRang("周"); 42 $this->GetTimeRang("周","-1"); 43 $this->GetTimeRang("周","14"); 44 $this->GetTimeRang("周","6"); 45 echo "
"; 46 /** 月 测试 */ 47 $this->GetTimeRang("月"); 48 $this->GetTimeRang("月","2015-5"); 49 $this->GetTimeRang("月","2016-7"); 50 $this->GetTimeRang("月","2016-11"); 51 echo "
"; 52 /** 年 测试 */ 53 $this->GetTimeRang("年","2011"); 54 $this->GetTimeRang("年"); 55 $this->GetTimeRang("年","2015"); 56 } 57 58 public function GetTimeRang($timeType = null,$selectTime = null){ 59 header("content-type: text/html;charset=utf-8"); 60 error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息 61 /** 默认是周 */ 62 if($timeType == null){ 63 $timeType ="周"; 64 $this->GetWeekRange($timeType); 65 }else{ 66 switch($timeType){ 67 case "日": // 24小时内所有 68 $this->GetDayRange($selectTime); 69 break; 70 case "周": // 一周内所有 71 $this->GetWeekRange($selectTime); 72 break; 73 case "月": 74 $this->GetMonthRange($selectTime); 75 break; 76 case "年": 77 $this->GetYearRange($selectTime); 78 break; 79 default: 80 echo("参数错误!"); 81 break; 82 } 83 } 84 } 85 86 /** -----------------获取 日 的范围---------------- 87 * $selectTime 是否获取特定的 某一天 格式是 y-m-d 88 */ 89 private function GetDayRange($selectTime){ 90 /** 防止 日后 添加 日 可选功能,格式是 y-m-d */ 91 if($selectTime==null){ 92 $timeF = strtotime(date("Y-m-d",time())); 93 }else{ 94 $timeF = strtotime($selectTime); 95 } 96 $timeL = $timeF + $this->DayTime; 97 if($this->openLog) { 98 echo "日获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "
"; 99 } 100 return " and (entryTime between '$timeF' and $timeL''"; 101 } 102 103 /** -----------------获取 周 的范围---------------- 104 * $selectTime 是否获取特定的 某一周 格式是 整数,含负数 105 */ 106 private function GetWeekRange($selectTime){ 107 $timeF = strtotime(date("Y-m-d",time())); 108 $dayOfWeek = date("N",time()); 109 $timeF = $timeF - (int)$dayOfWeek * $this->DayTime + 1; // 加一 纠正 110 /** 防止 日后 添加 周 可选功能,格式是 整数,含负数,指示 是距离当前这周的第几周 */ 111 if($selectTime!=null){ 112 switch($selectTime){ 113 case 0: // 特殊情况 0 是本周 114 $timeL = $timeF + $this->WeekTime; 115 break; 116 case 1: // 特殊情况 1 下一周 117 $timeF = $timeF + 1 * $this->WeekTime; 118 $timeL = $timeF + 1 * $this->WeekTime; 119 break; 120 default: 121 $dis = abs($selectTime) - 1; // 获取差,别忘了绝对值 122 $timeL = $timeF + (int)$selectTime * $this->WeekTime; 123 // 位置纠正 124 if($timeL < $timeF){ 125 $temp = $timeF; 126 $timeF = $timeL; 127 $timeL = $temp - $dis * $this->WeekTime; 128 }else{ 129 $timeF = $timeF + $dis * $this->WeekTime; 130 } 131 break; 132 } 133 }else{ 134 $timeL = $timeF + $this->WeekTime; 135 } 136 if($this->openLog) { 137 echo "周获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "
"; 138 } 139 return " and (entryTime between '$timeF' and $timeL''"; 140 } 141 142 /** -----------------获取 月 的范围---------------- 143 * $selectTime 是否获取特定的 某一月 格式是 y - m 144 */ 145 private function GetMonthRange($selectTime){ 146 /** 防止 日后 添加 月 可选功能,格式是 y - m */ 147 if($selectTime==null){ 148 $dayNumOfMonth = date("t",time()); // 获取本月所有天数 149 $timeF = strtotime(date("Y-m",time())); 150 }else{ 151 $dayNumOfMonth = date("t",strtotime($selectTime)); // 获取传过来的月所有天数 152 $timeF = strtotime($selectTime); 153 } 154 $timeL = $timeF + $dayNumOfMonth * $this->DayTime; 155 if($this->openLog) { 156 echo "月获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "
"; 157 } 158 return " and (entryTime between '$timeF' and $timeL''"; 159 } 160 161 /** -----------------获取 年 的范围---------------- 162 * $selectTime 是否获取特定的 某一年 格式是 y 163 */ 164 private function GetYearRange($selectTime){ 165 /** 防止 日后 添加 月 可选功能,格式是 y */ 166 if($selectTime==null){ 167 $timeF = strtotime(date("Y",time())."-1-1"); 168 $year = (int)date("Y",time()) + 1; 169 }else{ 170 $timeF = strtotime($selectTime."-1-1"); 171 $year = (int)$selectTime + 1; 172 } 173 $timeL = strtotime($year."-1-1"); 174 if($this->openLog){ 175 echo "年获取范围->".date("Y-m-d H:i:s",$timeF)."-----".date("Y-m-d H:i:s",$timeL)."
"; 176 } 177 return " and (entryTime between '$timeF' and $timeL''"; 178 } 179 180 } 181 182 $controller =new TimeRangeHelper(); 183 $func =$_REQUEST['func']; 184 $controller->$func();
View Code

 

 

 






你可能感兴趣的:(PHP 获取 特定时间范围 类)