解析時間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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM