zoukankan      html  css  js  c++  java
  • 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





  • 相关阅读:
    python二维数组的创建
    使用js制作 下拉选择日期列表 (即日期选择器)
    onblur事件和onfocus事件失效
    jQuery中$("input")与$(":input")的区别
    jQuery之绑定焦点事件(焦点事件失效)
    django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on ‘127.0.0.1’)
    UCI机器学习数据库
    Cannot open the disk 'F:centos64-finalCentOS 64-bitCentOS 64-bit.vmdk' orone of the snapshot disk
    mr本地运行的几种模式
    序列化为XML
  • 原文地址:https://www.cnblogs.com/linguanh/p/5559098.html
Copyright © 2011-2022 走看看