下面是一个解析时间的一个类

<?php
/**
* @purpose : 解析时间
* author: 袋鼠
* date: 2019/3/1
* time: 19:43
*/ class ParseTime
{
/**
* @purpose: 将一个时间范围解析成datetime格式或者timestamp格式
* @param string $value 由分隔符(如:-)分割的一个时间范围,格式:Y/m/d H:i:s - Y/m/d H:i:s,如2019-03-02 12:00:00 -2019-03-02 14:00:00
* @param string $type 返回时间类型,支持timestamp和datetime两种类型
* @param string $step 分隔符,默认为 -
* @param bool $autocomplate 是否自动补全时分秒,默认为true
* @return array 相应时间格式的数组,如:array(2) { [0]=> string(19) "2019/03/02 12:00:00" [1]=> string(19) "2019/03/02 14:59:59" }
*/
public static function parseDateRange($value,$type,$step='-',$autocomplate=true)
{
if(empty($value)){
return false;
} $ts = array_map(function($v){
return trim($v);
},explode($step,$value)); //是否自动补全H:i:s分开处理
if($autocomplate && count($ts) == 2) {
//时间戳格式和datetime格式的分别进行转换为时间戳格式
if (is_numeric($ts[1]) && date('His', $ts[1]) === '000000') {
$ts[1] = $ts[1] + 86399; // 加上 23:59:59
}elseif(date('His',strtotime($ts[1])) == '00000'){
$ts[0] = strtotime($ts[0]);
$ts[1] = strtotime($ts[1]) + 86399;
}
}elseif(count($ts) == 2 && $ts[0] == $ts[1]){
if (is_numeric($ts[1]) && date('His', $ts[1]) === '000000') {
$ts[1] = $ts[1] + 86399;
}elseif(date('His',strtotime($ts[1])) == '00000'){
$ts[0] = strtotime($ts[0]);
$ts[1] = strtotime($ts[1]) + 86399;
}
} if($type == 'timestamp'){
return $ts;
}else{
return array_map(function($v){
return date('Y-m-d H:i:s',$v);
},$ts);
} } /**
* @purpose: 将H:i:s格式的时间范围转换成整数值
* @param string $value 时间范围,格式为 H:i:s - H:i:s, 例如12:00:00 - 14:59:59
* @param string $step 分割符,默认为 -
* @return array 转换后的整数值,如:array(2) { [0]=> int(43200) [1]=> int(53999) }
*/
public static function parseHourRange($value,$step='-')
{
if(empty($value)){
return false;
} return array_map(function ($v){
//如果没有:,返回整数值,注意此处要用 === 而不是 ==,因为 0==false
if(strpos($v,':') === false){
return intval($v);
}
$arrTime = array_reverse(explode(':',$v));
$i = $s = 0;
//将倒序后的时间乘以60的$i次方,比如14::59:59=>倒序[59,59,14]=>整数值:59*60^0(秒) + 59*60^1(分)+ 14*60^2(时)=53999
foreach($arrTime as $time){
$s += $time * pow(60,$i) ;
$i ++;
}
return $s;
},explode($step,$value));
}
}

此类为袋鼠工作中所总结,如有转载,请注明出处:https://www.cnblogs.com/chrdai/p/10461522.html

解析时间parse time的更多相关文章

  1. 使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间

    http://zhangrenfang8738.blog.163.com/blog/static/95401881201142711450245/ curl监控站点响应时间 2011-05-27 11 ...

  2. 如何获取浏览器的DNS解析时间

    上一篇博客提到09年初WED团队开发的浏览器环境检测工具时,忘记说这个是aoao同学的创意了.不过没关系,据说他又在秘密规划新版本了,再据说新版要增加的DNS解析时间计算已经开发完成,点上面那个链接就 ...

  3. 分析DNS解析时间

    提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的.这也就是为什么国外的空间打开速度远 ...

  4. curl测试dns解析时间及tcp连接时间

    1.用Linux下的curl命令测量网络请求(分号是分隔符,可以是其他符号): curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer ...

  5. How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧

    个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...

  6. C++方式解析时间字符串和计算时间

    #include "StdAfx.h"#include "MySetTimeByVT.h" #include <ATLComTime.h>#incl ...

  7. 不当使用 union all 导致的SQL解析时间过长的问题优化

    在帮助用户优化应用过程中,发现用户大量使用union all 导致SQL解析非常缓慢的问题.考虑到这个问题很有代表意义,我觉得很有必要对于问题进行总结. 一.用户例子 WITH company_use ...

  8. 返回json格式时间,解析时间

    传入:Json格式的时间 JS如下: yyyy-M(MM)-d(dd) H(HH):m(mm):s(ss) function timeStamp2String(time) { var data=tim ...

  9. python解析时间格式脚本

    对于这种时间格式:發表於: 星期一 五月 28, 2012 6:59 am import re INPUT = "發表於: 星期一 五月 28, 2012 6:59 am 文章主題: 對&l ...

随机推荐

  1. javac编译多个java文件以及-cp、-classp、-sourcepath

    //编译多个文件 javac  path_of_file_a/a.java path_of_file_b/b.java path_of_file_c/c.java   -cp(classpath) 与 ...

  2. 【转载】PyTorch系列 (二):pytorch数据读取

    原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorc ...

  3. IDEA - Debug - not supported in -source 1.5

  4. mitx一大堆统计学知识

    从几乎0一路讲到马克洛夫 mit的密度太高了 下次必须花3天时间准备

  5. Git(1):版本库+工作区+暂存区

    参考博客:https://blog.csdn.net/qq_27825451/article/details/69396866

  6. systemctl: command not found

    可以使用service代替 service语法有一点区别 这里演示了错误语法和正确语法

  7. C# 高级编程04----类

    一.类和结构: 相同点: 1. 类和结构都是创建对象的模板,包含数据成员和方法成员 不同点: 1.在内存中的存储方式: 1)类是存储在堆内存上的引用类型,结构是存储在栈内存的值类型 2)结构不支持继承 ...

  8. js特殊符号(转)

    HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...

  9. 微信小程序rich-text 文本首行缩进和图片居中

    微信小程序开发使用rich-text组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换字符串,然后在渲染的同时 ...

  10. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...