分享一个JavaScript计算时间差的函数

版权所有,禁止匿名转载;禁止商业使用。

微博,QQ空间在发布时间上通常这么显示,5秒前,2分钟前,3小时前,2天前,这样的时间差显示很酷。前端页面实现这样的效果不复杂,自己写了个函数,分享下。

/*
  
*@param
 posttime,10位数字的时间戳 
  */ 
 function calcPastTime(posttime){
    var tmpDate=new Date();
    var nowtime=parseInt(tmpDate.getTime()/1000);
    //console.log(nowtime);
    var diff=nowtime-posttime;
    var diffText="";
    if(diff<60){
      diffText=diff+"秒前";
    }else if(diff>=60 && diff<3600){
      var mins=parseInt(diff/60);
      diffText=mins+"分钟前";
    }else if(diff>=3600 && diff<3600*24){
      var hours=parseInt(diff/3600);
      diffText=hours+"小时前";
    }else if(diff>3600*24 && diff<3600*24*3){
      var days=parseInt(diff/(3600*24));
      diffText=days+"小时前";
    }else{
      tmpDate.setTime(posttime*1000);
      diffText=tmpDate.format('yyyy-MM-dd');
    }
    return diffText;
  }

当时间差大于7天时,以 yyyy-MM-dd的格式显示,附上 Date对象的format方法:

/**
     * 格式化日期函数
     */
    Date.prototype.format = function(fmt){ //author: meizz   
      var o = {   
        "M+" : this.getMonth()+1,                 //月份   
        "d+" : this.getDate(),                    //日   
        "h+" : this.getHours(),                   //小时   
        "m+" : this.getMinutes(),                 //分   
        "s+" : this.getSeconds(),                 //秒   
        "q+" : Math.floor((this.getMonth()+3)/3), //季度   
        "S"  : this.getMilliseconds()             //毫秒   
      };   
      if(/(y+)/.test(fmt))   
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
      for(var k in o)   
        if(new RegExp("("+ k +")").test(fmt))   
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));


      return fmt;  
    }

0 0