• PHP——秒数转换为时分秒


    前言

    通讯记录需要用到的一个方法,就是将秒转为时分秒

    方法

    PHP有内置的方法,直接用即可,不过这个只是24小时以内。对于通讯录来说是够用了~

    示例

    $v = 30;
    gmdate('H:i:s', $v); //00:00:30

    如果要改成XX时XX分XX秒这种格式只要转化下就可以了,我这里直接用三元嵌套了

    /**
         * 处理时间
         * 
         * @param string $s 转化好的时间
         * 
         * @return string $ftime 处理好的时间
         */
        public function ftime($s)
        {
            $time = explode(':', $s);
            $time['0'] == '00' ? $h = 0 : $h = $time['0'];
            $time['1'] == '00' ? $m = 0 : $m = $time['1'];
            $time['2'] == '00' ? $s = 0 : $s = $time['2'];
            $ftime = (
            empty($h) ? (
                empty($m) ? $s .'秒' : (
                    empty($s) ? $m . '分' : $m . '分' . $s .'秒'
                    )
                ) :(
                empty($m) && empty($s) ? $h .'小时' : (
                    empty($m)  ? $h . '时' . $s . '秒' : (
                        empty($s) ? $h . '小时' . $m . '分' : $h . '小时' . $m . '分' .$s . '秒'
                    )
                        )
                            )
            );
            return $ftime;
        }

    效果图

    但是这个只是24小时以内的,虽然对通讯录够用了,但是对于如果下次需要一个显示天的呢?所以接下来重新写个方法。

    /**
     * 秒转换为天,小时,分钟
     * 
     * @param int $second 时间戳
     * 
     * @return string
     */
    function secondChanage($second = 0)
    {
        $newtime = '';
        $d = floor($second / (3600*24));
        $h = floor(($second % (3600*24)) / 3600);
        $m = floor((($second % (3600*24)) % 3600) / 60);
        $s = $second - ($d*24*3600) - ($h*3600) - ($m*60);
    
        empty($d) ?  
        $newtime = (
                empty($h) ? (
                    empty($m) ? $s . '秒' : ( 
                        empty($s) ? $m.'分' :  $m.'分'.$s.'秒'
                        )
                    ) : (
                    empty($m) && empty($s) ? $h . '时' : (
                        empty($m) ? $h . '时' . $s . '秒' : (
                            empty($s) ? $h . '时' . $m . '分' : $h . '时' . $m . '分' . $s . '秒'
                            )
                    )
                )
        ) : $newtime = (
            empty($h) && empty($m) && empty($s) ? $d . '天' : (
                empty($h) && empty($m) ? $d . '天' . $s .'秒' : (
                    empty($h) && empty($s) ? $d . '天' . $m .'分' : (
                        empty($m) && empty($s) ? $d . '天' .$h . '时' : (
                            empty($h) ? $d . '天' .$m . '分' . $s .'秒' : (
                                empty($m) ? $d . '天' .$h . '时' . $s .'秒' : (
                                    empty($s) ? $d . '天' .$h . '时' . $m .'分' : $d . '天' .$h . '时' . $m .'分' . $s . '秒'
                                )
                            )
                        )
                    )
                )
            )
        );
     
        return $newtime;
      
    }

  • 相关阅读:
    MFC半透明对话框
    关于.h .lib .dll的总结
    C# 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配
    LeetCode——011 Container With Most Water
    《Effective C++》——读书笔记
    《More Effective C++》——读书笔记
    Chrome插件推荐
    LeetCode——004-Median-of-Two-Sorted-Arrays
    《STL源码剖析》——第七、八章:仿函数与接配器
    《STL源码剖析》——第五、六:关联容器与算法
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/10789597.html
Copyright © 2020-2023  润新知