解析时间parse time
下面是一个解析时间的一个类
<?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的更多相关文章
- 使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间
http://zhangrenfang8738.blog.163.com/blog/static/95401881201142711450245/ curl监控站点响应时间 2011-05-27 11 ...
- 如何获取浏览器的DNS解析时间
上一篇博客提到09年初WED团队开发的浏览器环境检测工具时,忘记说这个是aoao同学的创意了.不过没关系,据说他又在秘密规划新版本了,再据说新版要增加的DNS解析时间计算已经开发完成,点上面那个链接就 ...
- 分析DNS解析时间
提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的.这也就是为什么国外的空间打开速度远 ...
- curl测试dns解析时间及tcp连接时间
1.用Linux下的curl命令测量网络请求(分号是分隔符,可以是其他符号): curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer ...
- How Javascript works (Javascript工作原理) (十四) 解析,语法抽象树及最小化解析时间的 5 条小技巧
个人总结:读完这篇文章需要15分钟,文章介绍了抽象语法树与js引擎解析这些语法树的过程,提到了懒解析——即转换为AST的过程中不直接进入函数体解析,当这个函数体需要执行的时候才进行相应转换.(因为有的 ...
- C++方式解析时间字符串和计算时间
#include "StdAfx.h"#include "MySetTimeByVT.h" #include <ATLComTime.h>#incl ...
- 不当使用 union all 导致的SQL解析时间过长的问题优化
在帮助用户优化应用过程中,发现用户大量使用union all 导致SQL解析非常缓慢的问题.考虑到这个问题很有代表意义,我觉得很有必要对于问题进行总结. 一.用户例子 WITH company_use ...
- 返回json格式时间,解析时间
传入:Json格式的时间 JS如下: yyyy-M(MM)-d(dd) H(HH):m(mm):s(ss) function timeStamp2String(time) { var data=tim ...
- python解析时间格式脚本
对于这种时间格式:發表於: 星期一 五月 28, 2012 6:59 am import re INPUT = "發表於: 星期一 五月 28, 2012 6:59 am 文章主題: 對&l ...
随机推荐
- DIV内文字两端对齐
div{ text-align: justify; text-justify:inter-ideograph; }
- js数组扁平化
看到一个有趣的题目: var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]; 一个多维 ...
- 20175306 迭代和JDB调试
迭代和JDB调试 1.使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 代码展示: public class C { public static ...
- TypeError: softmax() got an unexpected keyword argument 'axis'
出现这个问题,有几种解决办法,可以调低一下keras的版本,比如: pip install keras==2.1 不过还有个更方便的方法,从错误可知softmax中不包含axis这个参数,那么把axi ...
- Linux启动activemq失败
第一种情况: 在网上查找错误,通过./activemq console命令可以查看到activemq启动的错误信息,另外在data/activemq.log文件中可以查看到错误日志. java.io. ...
- linux系统自动备份打包部署脚本
1.使用jenkins配置任务 2.执行脚本放在/home/guard/目录下 #!/bin/sh #author wangxiangyu #当前时间 DATE=$(date +%Y%m%d) #环境 ...
- Centos安装Git、DotNet、Docker
1.安装Git yum install git 可通过下面的命令查看Git版本 git --version 2.安装Dotnet sudo yum install libunwind libicu 导 ...
- openpyxl使用sheet.rows或sheet.columns报TypeError: 'generator' object is not subscriptable解决方式
解决方案: 因为新版本的openpyxl使用rows或者columns返回一个生成器所以可以使用List来解决报错问题 >>> sheet.columns[0] Traceback ...
- CentOS 7 配置静态IP后不生效 & Job for network.service failed
参考:http://tieba.baidu.com/p/3233996339#57290767555l 在CentOS中配置静态IP后不生效. 解决办法:将/etc/sysconfig/network ...
- Emacs中的拼写检查
无论是在Emacs中写英文日记(diary).Org mode笔记,还是撰写程序的注释和文档,拼写检查都是一项提高工作效率.保证成果品质的必不可缺的工具.拼写检查对于常见的文字处理软件(如Word.L ...