PHP 获取 特定时间范围 类

简介: 目录    前序   用途   功能及事项   使用方法   代码及注释   前序:   总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,我也不会学这么多,这 2年来,几乎所有的服务器接口都也是 由我一手操办,用的是 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
试一试?
     点击我就能看到啦
 就可以看到
   

代码及注释:

 

  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 "</br>";
 40         /** 周 测试 */
 41         $this->GetTimeRang("周");
 42         $this->GetTimeRang("周","-1");
 43         $this->GetTimeRang("周","14");
 44         $this->GetTimeRang("周","6");
 45         echo "</br>";
 46         /** 月 测试 */
 47         $this->GetTimeRang("月");
 48         $this->GetTimeRang("月","2015-5");
 49         $this->GetTimeRang("月","2016-7");
 50         $this->GetTimeRang("月","2016-11");
 51         echo "</br>";
 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) . "</br>";
 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) . "</br>";
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) . "</br>";
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)."</br>";
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

 

 

 






如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


img_12e3f54d4d0f70f0eb14f20548e3d781.png
目录
相关文章
|
7月前
|
Java 程序员 PHP
PHP对象和类
PHP对象和类
58 0
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2
|
3月前
|
PHP
PHP中的面向对象编程:理解类与对象
本文将深入探讨PHP中面向对象编程的核心概念——类与对象。通过实例讲解,帮助读者更好地理解如何在PHP中运用OOP编写更高效、可维护的代码。
50 9
|
4月前
|
PHP 开发者
PHP中的面向对象编程:掌握类与对象的精髓
探索PHP的面向对象编程世界,本文将带你了解如何通过创建和操作类来实例化对象。我们将深入讲解类的声明、构造函数的使用以及继承和多态性的概念。准备好,让我们一起在代码的海洋中航行,揭开PHP对象编程的神秘面纱!
|
5月前
|
PHP
如何在PHP中创建一个自定义的观察者类?
【7月更文挑战第2天】如何在PHP中创建一个自定义的观察者类?
30 0
|
5月前
|
PHP
PHP中,你可以使用class关键字来定义一个类
【7月更文挑战第2天】PHP中,你可以使用class关键字来定义一个类
30 0
|
7月前
|
存储 监控 安全
PHP医院安全(不良)事件报告系统源码 vue2+element支持11大类不良事件上报、审核处理、分析改进
医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件的情况,更好地掌握不良事件的发生趋势,为及时采取适当的管理措施和流程、制度改进提供了良好的量化依据。系统通过汇集不同类型事件的报告,从中分析出医院内部潜在的问题和风险,将发生的事故降到最低,从而保证病人安全和医护人员安全。
58 0
|
关系型数据库 MySQL 程序员
漏刻有时操作数据php类记录及筛选条件的写法
漏刻有时操作数据php类记录及筛选条件的写法
60 1
|
XML 移动开发 Shell
CTF中常用的php原生类总结
CTF中常用的php原生类总结
238 0