版权所有,禁止匿名转载;禁止商业使用。
微博,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;
}