zoukankan      html  css  js  c++  java
  • 将时间显示为“刚刚”“n分钟/小时前”等

    在很多场合为了显示出信息的及时性,一般会将时间显示成“刚刚”,“5分钟前”,“3小时前”等,而不是直接将时间打印出来。比如微博,SNS类应用就最长用到这个功能。而一般存储在数据库中的时间格式为 Unix时间戳,所以这里记录一个将 Unix时间戳 转化为时间轴显示的PHP函数。

    函数比较简单,直接看代码就很好懂了。

    <?php
    
    date_default_timezone_set('PRC');
    $date = "1351836000";
    echo tranTime($date);
    
    function transfer_time($time)
    {
        $rtime = date("m-d H:i",$time);
        $htime = date("H:i",$time);
    
        $time = time() - $time;
    
        if ($time < 60)
        {
            $str = '刚刚';
        }
        elseif ($time < 60 * 60)
        {
            $min = floor($time/60);
            $str = $min.'分钟前';
        }
        elseif ($time < 60 * 60 * 24)
        {
            $h = floor($time/(60*60));
            $str = $h.'小时前 '.$htime;
        }
        elseif ($time < 60 * 60 * 24 * 3)
        {
            $d = floor($time/(60*60*24));
            if($d==1)
                $str = '昨天 '.$rtime;
            else
                $str = '前天 '.$rtime;
        }
        else
        {
            $str = $rtime;
        }
        return $str;
    }
    还有一种方法是tp中的一个方法
    public function timeDiff( $time ,$precision=false) {
    if(!is_numeric($precision) && !is_bool($precision)) {
    static $_diff = array('y'=>'年','M'=>'个月','d'=>'天','w'=>'周','s'=>'秒','h'=>'小时','m'=>'分钟');
    return ceil($this->dateDiff($time,$precision)).$_diff[$precision].'前';
    }
    $diff = abs($this->parse($time) - $this->date);
    static $chunks = array(array(31536000,'年'),array(2592000,'个月'),array(604800,'周'),array(86400,'天'),array(3600 ,'小时'),array(60,'分钟'),array(1,'秒'));
    $count =0;
    $since = '';
    for($i=0;$i<count($chunks);$i++) {
    if($diff>=$chunks[$i][0]) {
    $num = floor($diff/$chunks[$i][0]);
    $since .= sprintf('%d'.$chunks[$i][1],$num);
    $diff = (int)($diff-$chunks[$i][0]*$num);
    $count++;
    if(!$precision || $count>=$precision) {
    break;
    }
    }
    }
    return $since.'前';
    }
    ?>
    

    注意函数transfer_time()中的参数$time必须为Unix时间戳,如果不是请先用strtotime()将其转换成Unix时间戳。

    原文地址http://www.nowamagic.net/librarys/veda/detail/2380

     
     
  • 相关阅读:
    UnxUtils让windows下的dos命令变为linux下的命令
    Python多线程&进程
    Web前端工程师-优秀简历汇总
    最详细的Vuex教程
    Vue2.0 探索之路——生命周期和钩子函数的一些理解
    理解 $nextTick 的作用
    使用git rebase合并多次commit
    vim 退出命令(保存、放弃保存)
    Vue获取DOM元素样式 && 样式更改
    Vue Router的配置
  • 原文地址:https://www.cnblogs.com/efan/p/3831604.html
Copyright © 2011-2022 走看看