• PHP格式化时间戳函数分享


    CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,我封装好了两个函数可以直接拿来用

    下面是封装好的方法

    function formatTime($time) {
            $time = (int) substr($time, 0, 10);
            $int = time() - $time;
            $str = '';
            if ($int <= 2){
                $str = sprintf('刚刚', $int);
            }elseif ($int < 60){
                $str = sprintf('%d秒前', $int);
            }elseif ($int < 3600){
                $str = sprintf('%d分钟前', floor($int / 60));
            }elseif ($int < 86400){
                $str = sprintf('%d小时前', floor($int / 3600));
            }elseif ($int < 2592000){
                $str = sprintf('%d天前', floor($int / 86400));
            }else{
                $str = date('Y-m-d H:i:s', $time);
            }
            return $str;
        }
    

    或者 更详细的

        function formatTime($time)
        {
            $text = '';
            $time = intval($time);
            $ctime = time();
            $t = $ctime - $time; //时间差
            if ($t < 0) {
                return date('Y-m-d', $time);
            }
            ;
            $y = date('Y', $ctime) - date('Y', $time);//是否跨年
            switch ($t) {
                case $t == 0:
                    $text = '刚刚';
                    break;
                case $t < 60://一分钟内
                    $text = $t . '秒前';
                    break;
                case $t < 3600://一小时内
                    $text = floor($t / 60) . '分钟前';
                    break;
                case $t < 86400://一天内
                    $text = floor($t / 3600) . '小时前'; // 一天内
                    break;
                case $t < 2592000://30天内
                    if($time > strtotime(date('Ymd',strtotime("-1 day")))) {
                        $text = '昨天';
                    } elseif($time > strtotime(date('Ymd',strtotime("-2 days")))) {
                        $text = '前天';
                    } else {
                        $text = floor($t / 86400) . '天前';
                    }
                    break;
                case $t < 31536000 && $y == 0://一年内 不跨年
                    $m = date('m', $ctime) - date('m', $time) -1;
    
                    if($m == 0) {
                        $text = floor($t / 86400) . '天前';
                    } else {
                        $text = $m . '个月前';
                    }
                    break;
                case $t < 31536000 && $y > 0://一年内 跨年
                    $text = (11 - date('m', $time) + date('m', $ctime)) . '个月前';
                    break;
                default:
                    $text = (date('Y', $ctime) - date('Y', $time)) . '年前';
                    break;
            }
    
            return $text;
        }
    
  • 相关阅读:
    查找数据库表中重复的 Image 类型值
    C#中的引用传递和值传递。
    用JS解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
    根据业务自己设计的.NET工厂模式架构
    封装EF code first用存储过程的分页方法
    2013款MacBook Air装Windows7单系统
    js判断是否在微信浏览器中打开
    EF Code First连接现有数据库
    JS中for循序中延迟加载实现动态效果
    DIV+CSS左右两列自适应高度的方法
  • 原文地址:https://www.cnblogs.com/maketea/p/6163656.html
Copyright © 2020-2023  润新知