PHP比較兩個時間戳相差天時分秒

                                                          PHP比較兩個時間戳相差天時分秒

 

一、效果

二、代碼

public function test4(){
        $time = time();
        $beforeTime = $time - mt_rand(1000, 9999);
        $afterTime = $time + mt_rand(1000, 9999);
        $array = [
            [
                'desc' => '相等的情況:',
                'time' => $time,
                'see_all' => true,
            ],
            [
                'desc' => '<i>詳情信息-之前:</i>',
                'time' => $beforeTime,
                'see_all' => true,
            ],
            [
                'desc' => '<i>粗略信息-之前:</i>',
                'time' => $beforeTime,
                'see_all' => false,
            ],
            [
                'desc' => '詳情信息-之後:',
                'time' => $afterTime,
                'see_all' => true,
            ],
            [
                'desc' => '粗略信息-之後:',
                'time' => $afterTime,
                'see_all' => false,
            ]
        ];

        foreach ($array as $value){
            echo $value['desc'] . ' [ ' . $this->beforeTime($value['time'], $value['see_all']) . ' ]<br/>';
        }
        die();
    }

    /**
     * @param $time 待計算的時間戳
     * @param bool $seeAll 是否返回詳細信息:true 是; false 否
     * @return string 結果數據
     */
    public function beforeTime($time, $seeAll = true){
        $nowTime = time();
        if ($time == $nowTime){
            return '時間相等,比較無意義...';
        }
        $suffix = $nowTime > $time ? '前' : '後';   //判斷是之前還是之後
        $diffTime = abs($nowTime - $time);  //求絕對值
        $day = (int)($diffTime / 86400);                   //天
        $hour = (int)($diffTime % 86400 / 3600);           //時
        $minute = (int)($diffTime % 86400 % 3600 / 60);    //分
        $second = (int)($diffTime % 86400 % 3600 % 60);    //秒

        //從大到小,鍵值不能互換,如果值爲0會存在鍵覆蓋問題
        $timeArray = [
            '天' => $day,
            '時' => $hour,
            '分' => $minute,
            '秒' => $second
        ];

        $string = '';
        foreach ($timeArray as $key => $value){
            if ($value){    //數據不爲空,則拼接
                $string .= $this->addZero($value) . $key;
                if (!$seeAll){
                    break;
                }
            }
        }

        return $string . $suffix;
    }

    public function addZero($data){
        return ($data >= 10) ? $data : ('0' . $data);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章