刚刚、几秒前,时间格式化函数

应用场景

浏览实时信息网站时,总会看到发布时间,是这么显示的 例如 刚刚、几秒前,几分钟,几天,日期 ...,提供以下处理方案

  • 服务端 ——PHP

  • 客户端 ——JavaScript

clipboard.png

处理方案

服务端 ——PHP

使用服务器端实现,很方便,把时间戳存储到数据库,具有时间统一的优点,但当使用ajax请求数据库直接返回json数据时,无法使用。


    /**
     * [dataStr description]
     * @author 邱先生 
     * @copyright 烟火里的尘埃
     * @version [V1.0版本] 
     * @date 2016-07-13
     * @param  [type] $date [时间戳]
     * @return [type]       [description]
     */
    static public function dataStr($date){
        if((time()-$date)<60*10){
              //十分钟内
              echo '刚刚';
          }elseif(((time()-$date)<60*60)&&((time()-$date)>=60*10)){
              //超过十分钟少于1小时
              $s = floor((time()-$date)/60);
              echo  $s."分钟前";
          }elseif(((time()-$date)<60*60*24)&&((time()-$date)>=60*60)){ 
              //超过1小时少于24小时
              $s = floor((time()-$date)/60/60);
              echo  $s."小时前";
          }elseif(((time()-$date)<60*60*24*3)&&((time()-$date)>=60*60*24)){ 
              //超过1天少于3天内
              $s = floor((time()-$date)/60/60/24);
              echo $s."天前";
          }else{ 
              //超过3天
             echo  date("Y/m/d",$date);
          }

    }

客户端 ——JavaScript

适用于ajax请求服务器直接返回json数据,处理展示的情况,但时间的计算是根据客户端时间为准计算(现在都是智能时代,可忽略),有一个问题是,PHP存储到数据库的时间戳是10位的,但js的时间戳不是。以下函数已经做了处理。


/**
 * [Datestr 时间戳转字符串格式]
 * @author 邱先生
 * @copyright 烟火里的尘埃
 * @version [V1.0版本] 
 * @date 2016-06-26
 * @param  {[type]} date [传入php 时间戳]
 */
function dateStr(date){
    //获取js 时间戳
    var time=new Date().getTime();
    //去掉 js 时间戳后三位,与php 时间戳保持一致
    time=parseInt((time-date*1000)/1000);

    //存储转换值 
    var s;
    if(time<60*10){//十分钟内
        return '刚刚';
    }else if((time<60*60)&&(time>=60*10)){
        //超过十分钟少于1小时
        s = Math.floor(time/60);
        return  s+"分钟前";
    }else if((time<60*60*24)&&(time>=60*60)){ 
        //超过1小时少于24小时
        s = Math.floor(time/60/60);
        return  s+"小时前";
    }else if((time<60*60*24*3)&&(time>=60*60*24)){ 
        //超过1天少于3天内
        s = Math.floor(time/60/60/24);
        return s+"天前";
    }else{ 
        //超过3天
        var date= new Date(parseInt(date) * 1000);
        return date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值