目录

   前序

  用途

  功能及事项

  使用方法

  代码及注释

前序:

  总体来说,我更应该是一个 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
/**
* Created by PhpStorm.
* Author: 林冠宏
* Date: 2016/6/4
* Time: 16:06
*
* 前序:
* 总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,
* 我也不会学这么多,这么 2年来,几乎素有的服务器接口都也是 由我一手操办,用的是 pHp,目前大三,
* 我是在很不愿意的情况下完成这个类的,因为 项目分工的 后台程序员,没完善这块,我来搞,时间就不
* 够了。 Whatever,enjoy this `Class`.
*
* 功能:
* 1,产生 要查找的 时间范围
* 2,格式是 时间戳,拥有时间戳,可以任意处理
* 3,常见的使用场景是,根据 时间范围 搜索数据
*/ class TimeRangeHelper{ /** 一天 和 一周的时间轴 大小是肯定的,月的天数不能确定,年也是,故不作定义 */
private $DayTime ;
private $WeekTime ;
private $openLog ; /** 是否开启调试信息输出 */ function TimeRangeHelper(){
$this->DayTime = 24*60*60;
$this->WeekTime = 7*24*60*60;
$this->openLog = true;
} /** 整体测试函数 */
public function RangeTest(){
/** 日 测试 */
$this->GetTimeRang("日","2016-6-5");
$this->GetTimeRang("日");
$this->GetTimeRang("日","2015-6-1");
echo "</br>";
/** 周 测试 */
$this->GetTimeRang("周");
$this->GetTimeRang("周","-1");
$this->GetTimeRang("周","14");
$this->GetTimeRang("周","6");
echo "</br>";
/** 月 测试 */
$this->GetTimeRang("月");
$this->GetTimeRang("月","2015-5");
$this->GetTimeRang("月","2016-7");
$this->GetTimeRang("月","2016-11");
echo "</br>";
/** 年 测试 */
$this->GetTimeRang("年","2011");
$this->GetTimeRang("年");
$this->GetTimeRang("年","2015");
} public function GetTimeRang($timeType = null,$selectTime = null){
header("content-type: text/html;charset=utf-8");
error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息
/** 默认是周 */
if($timeType == null){
$timeType ="周";
$this->GetWeekRange($timeType);
}else{
switch($timeType){
case "日": // 24小时内所有
$this->GetDayRange($selectTime);
break;
case "周": // 一周内所有
$this->GetWeekRange($selectTime);
break;
case "月":
$this->GetMonthRange($selectTime);
break;
case "年":
$this->GetYearRange($selectTime);
break;
default:
echo("参数错误!");
break;
}
}
} /** -----------------获取 日 的范围----------------
* $selectTime 是否获取特定的 某一天 格式是 y-m-d
*/
private function GetDayRange($selectTime){
/** 防止 日后 添加 日 可选功能,格式是 y-m-d */
if($selectTime==null){
$timeF = strtotime(date("Y-m-d",time()));
}else{
$timeF = strtotime($selectTime);
}
$timeL = $timeF + $this->DayTime;
if($this->openLog) {
echo "日获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "</br>";
}
return " and (entryTime between '$timeF' and $timeL''";
} /** -----------------获取 周 的范围----------------
* $selectTime 是否获取特定的 某一周 格式是 整数,含负数
*/
private function GetWeekRange($selectTime){
$timeF = strtotime(date("Y-m-d",time()));
$dayOfWeek = date("N",time());
$timeF = $timeF - (int)$dayOfWeek * $this->DayTime + 1; // 加一 纠正
/** 防止 日后 添加 周 可选功能,格式是 整数,含负数,指示 是距离当前这周的第几周 */
if($selectTime!=null){
switch($selectTime){
case 0: // 特殊情况 0 是本周
$timeL = $timeF + $this->WeekTime;
break;
case 1: // 特殊情况 1 下一周
$timeF = $timeF + 1 * $this->WeekTime;
$timeL = $timeF + 1 * $this->WeekTime;
break;
default:
$dis = abs($selectTime) - 1; // 获取差,别忘了绝对值
$timeL = $timeF + (int)$selectTime * $this->WeekTime;
// 位置纠正
if($timeL < $timeF){
$temp = $timeF;
$timeF = $timeL;
$timeL = $temp - $dis * $this->WeekTime;
}else{
$timeF = $timeF + $dis * $this->WeekTime;
}
break;
}
}else{
$timeL = $timeF + $this->WeekTime;
}
if($this->openLog) {
echo "周获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "</br>";
}
return " and (entryTime between '$timeF' and $timeL''";
} /** -----------------获取 月 的范围----------------
* $selectTime 是否获取特定的 某一月 格式是 y - m
*/
private function GetMonthRange($selectTime){
/** 防止 日后 添加 月 可选功能,格式是 y - m */
if($selectTime==null){
$dayNumOfMonth = date("t",time()); // 获取本月所有天数
$timeF = strtotime(date("Y-m",time()));
}else{
$dayNumOfMonth = date("t",strtotime($selectTime)); // 获取传过来的月所有天数
$timeF = strtotime($selectTime);
}
$timeL = $timeF + $dayNumOfMonth * $this->DayTime;
if($this->openLog) {
echo "月获取范围->" . date("Y-m-d H:i:s", $timeF) . "-----" . date("Y-m-d H:i:s", $timeL) . "</br>";
}
return " and (entryTime between '$timeF' and $timeL''";
} /** -----------------获取 年 的范围----------------
* $selectTime 是否获取特定的 某一年 格式是 y
*/
private function GetYearRange($selectTime){
/** 防止 日后 添加 月 可选功能,格式是 y */
if($selectTime==null){
$timeF = strtotime(date("Y",time())."-1-1");
$year = (int)date("Y",time()) + 1;
}else{
$timeF = strtotime($selectTime."-1-1");
$year = (int)$selectTime + 1;
}
$timeL = strtotime($year."-1-1");
if($this->openLog){
echo "年获取范围->".date("Y-m-d H:i:s",$timeF)."-----".date("Y-m-d H:i:s",$timeL)."</br>";
}
return " and (entryTime between '$timeF' and $timeL''";
} } $controller =new TimeRangeHelper();
$func =$_REQUEST['func'];
$controller->$func();

PHP 获取 特定时间范围 类的更多相关文章

  1. windows下使用C#获取特定进程网络流量

    最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名 ...

  2. C#获取特定进程CPU和内存使用率

    首先是获取特定进程对象,可以使用Process.GetProcesses()方法来获取系统中运行的所有进程,或者使用Process.GetCurrentProcess()方法来获取当前程序所对应的进程 ...

  3. C++ 获取特定进程的CPU使用率<转>

    C++ 获取特定进程的CPU使用率 近来发现笔记本在关闭屏幕后风扇转得特别快,打开屏幕后看任务管理器,风扇马上减速,也没有发现大量占用CPU的进程.于是想写一个小程序在后台记录每个进程的CPU使用情况 ...

  4. [ jquery 过滤器 hasClass(class) ] 此方法用于在选择器的基础之上检查当前的元素是否含有某个特定的类,如果有,则返回true

    此方法用于在选择器的基础之上检查当前的元素是否含有某个特定的类,如果有,则返回true 实例: <!DOCTYPE html> <html lang='zh-cn'> < ...

  5. SQLServer中获取特定表的所有列名

    1.获取特定表的所有列名: Select Name FROM SysColumns Where id=Object_Id('tableName') 参考:http://blog.csdn.net/wu ...

  6. asp.net 类库中获取session c#类中获取session

    asp.net  类库中获取session c#类中获取session 1. 先引入命名空间 using System.Web; using System.Web.SessionState; 在使用H ...

  7. python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理

    一.调用js 执行方法:execute_script(script,*args) 场景一:在页面上直接执行调用js 场景二:在定位的某个元素上执行调用js 如:掩藏文字(提示插件 tooltip设置淡 ...

  8. Spring Aop中,获取被代理类的工具

    在实际应用中,顺着过去就是一个类被代理.反过来,可能需要逆向进行,拿到被代理的类,实际工作中碰到了,就拿出来分享下. /** * 获取被代理类的Object * @author Monkey */ p ...

  9. 多个iframe中根据src获取特定iframe并执行操作

    多个iframe中根据src获取特定iframe并执行操作 前言:在项目中做一个批量编辑工单时需要在一大堆的iframe中的某一个iframe里边再用模态框的形式显示编辑区域,然后再在模态框里边加入i ...

随机推荐

  1. 对抗假人 —— 前后端结合的 WAF

    前言 之前介绍了一些前后端结合的中间人攻击方案.由于 Web 程序的特殊性,前端脚本的参与能大幅弥补后端的不足,从而达到传统难以实现的效果. 攻防本为一体,既然能用于攻击,类似的思路同样也可用于防御. ...

  2. Centos——安装JDK

    写在前面: Just mark! 创建linux虚拟机的时候经常要安装JDK,配置环境变量,却又经常忘记,这里记录一下. 环境:Centos-6.8-x86_64-minimal JDK :jdk-7 ...

  3. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  4. cocos2dx调用浏览器打开网址

    安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...

  5. BPM始终服务于人,落脚于人

    数字经济时代下,云计算.大数据.移动互联已经成为当下企业必须采取的武装力量.随着互联网+.中国制造2025.工业4.0等国家战略的引导与支持,无数的企业在这场数字化浪潮中使尽浑身解数,想要抓住机遇奋力 ...

  6. 小程序用户反馈 - HotApp小程序统计仿微信聊天用户反馈组件,开源

    用户反馈是小程序开发必要的一个功能,但是和自己核心业务没关系,主要是产品运营方便收集用户的对产品的反馈.HotApp推出了用户反馈的组件,方便大家直接集成使用 源码下载地址: https://gith ...

  7. Android Fragment 剖析

    1.Fragment如何产生?2.什么是Fragment Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后 ...

  8. TFS 生成发布代理

    下载Agent 后,执行配置命令     参考 安装TFS(2015)工作组模式代理服务器(Agent)

  9. DDD设计中的Unitwork与DomainEvent如何相容?

    最近在开发过程中,遇到了一个场景,甚是棘手,在这里分享一下.希望大家脑洞大开一起来想一下解决思路.鄙人也想了一个方案拿出来和大家一起探讨一下是否合理. 一.简单介绍一下涉及的对象概念 工作单元:维护变 ...

  10. 在Ubuntu中搭建.NET开发环境

    Mono简介Mono是Xamarin公司C#和CLR的ECMA标准基于开发的一个开源的.NET实现版本,它是Linux平台上开发.NET应用程序首选.同时其也提供了Xamarin.IOS和Xamari ...