下面是一个解析时间的一个类
<?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