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);
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值