• PHP实现时间格式转换,获取友好的时间显示


    PHP实现时间格式转换,获取友好的时间显示

     

    1.函数gmstrftime();

    <?php
    
    /**
     * 时间友好显示
     * @param int $time 时间戳
     * @return string   友好时间字符串
     * @author  zhouzy
     */
    function get_friendly_time($time) {
        //time=时间戳,timeCurr=当前时间,timeDiff=时间差,dayDiff=天数差,yearDiff=年数差
        if (!$time) {
            return '';
        }
        $timeCurr = time();
        $timeDiff = $timeCurr - $time;
        $dayDiff = intval(date("z", $timeCurr)) - intval(date("z", $time));
        $yearDiff = intval(date("Y", $timeCurr)) - intval(date("Y", $time));
        if ($timeDiff < 60) {
            if ($timeDiff < 10) {
                return '刚刚';
            } else {
                return floor($timeDiff) . "秒前";
            }
        } elseif ($timeDiff < 3600) {  //1小时内
            return floor($timeDiff / 60) . "分钟前";
        } elseif ($yearDiff == 0 && $dayDiff == 0) {   //今天内
            return '今天 ' . date('H:i', $time);
        } elseif ($yearDiff == 0) {    //今年内
            return date("m月d日 H:i", $time);
        } else {  //正常显示
            return date("Y-m-d H:i", $time);
        }
    }
    
    
    
    
    /**
     * 时间对比
     * @param $time int    对比的时间(时间戳)
     * @param $nowTime int 目前时间(时间戳)
     * @return string
     */
    function time_ago($time = 0, $nowTime = 0) {
        if (!$nowTime) $nowTime = time();
        $dif = $nowTime - $time;
        if ($dif < 1)
            return '刚刚';
        if ($dif < 60)
            return $dif . '秒前';
        $dif = $dif / 60;
        if (1 <= $dif && $dif < 60)
            return (int)$dif . '分钟前';
        $dif = $dif / 60;
        if (1 <= $dif && $dif < 24)
            return (int)$dif . '小时前';
        //最多显示3天前
        $dif = $dif / 24;
        if (1 <= $dif && $dif <= 3)
            return (int)$dif . '天前';
        return date('m-d', $time);
    }
    
    
    
    
    
    /**
     * 友好的时间显示
     */
    function time_to_units($time) {
        $now_time = time();
        $time_diff = $now_time - $time;
    
        $units = array(
            '31536000' => '年前',
            '2592000'  => '月前',
            '86400'    => '天前',
            '3600'     => '小时前',
            '60'       => '分钟前',
            '1'        => '秒前',
        );
        foreach ($units as $key => $value) {
            if ($time_diff > $key) {
                $num = (int)($time_diff / $key);
                $tips = $num . $value;
                break;
            }
        }
        return $tips;
    }
    
    
    
    /**
     * 计算持续时长
     * (秒转换为天,小时,分钟)
     * @param int $second 秒数
     * @return string $duration 5天10小时43分钟40秒
     */
    function secondTime($seconds=0){
        $duration = '';
    
        $seconds  = (int) $seconds;
        if ($seconds <= 0) {
            return $duration.'0秒';
        }
    
        list($day, $hour, $minute, $second) = explode(' ', gmstrftime('%j %H %M %S', $seconds));
    
        $day -= 1;
        if ($day > 0) {
            $duration .= (int) $day.'天';
        }
        if ($hour > 0) {
            $duration .= (int) $hour.'小时';
        }
        if ($minute > 0) {
            $duration .= (int) $minute.'分钟';
        }
        if ($second > 0) {
            $duration .= (int) $second.'秒';
        }
    
        return $duration;
    }
  • 相关阅读:
    npm使用淘宝镜像源
    MapReduce任务执行源码分析
    spark.sql.shuffle.partitions到底影响什么
    hdfs的写入数据流程及异常情况分析
    面试题
    HDFS的双缓冲机制详解
    rpm包无法卸载
    hive建表支持的文件类型与压缩格式
    centos6中同时安装python3.7与python2.6
    linux centos6.x安装mysql5.6.33版本
  • 原文地址:https://www.cnblogs.com/ccw869476711/p/12932044.html
Copyright © 2020-2023  润新知