之前写过对比当前时间四天内的时间戳转换为X秒,X分钟,X小时,X日的时间戳转换方法,超过四天显示具体日期,如果用英文表示的话,还要优化一下,因为英文一天前不能表示复数,不可以用1 days ago表示,同理一小时前,也不能用1 hours ago ,一分钟前也不能用复数,所以优化了一下这个时间戳格式化方法,并在Vue的项目中实验成功,代码分享做个笔记。需要注意的是代码我对比的是客户端当前时间,项目中请自行替换服务器的当前时间。
Vue.filter('jsDateDiff',function (covertDate){
var d_minutes,d_hours,d_days;
var timeNow =new Date().getTime(); //转换为服务器当前时间戳
var currcovertDate = covertDate;
var d,result;
d = (timeNow - currcovertDate)/1000;
d_days = parseInt(d/86400);
d_hours = parseInt(d/3600);
d_minutes = parseInt(d/60);
if(d_days>0 && d_days<4 && d_days !=1){
result = d_days+" days ago";
}else if(d_days==1){
result = "yesterday";
}else if(d_days<=0 && d_hours>0 && d_hours !=1){
result = d_hours+"hours ago";
}else if(d_hours==1){
result = "an hour ago";
}else if(d_hours<=0 && d_minutes>0 && d_minutes !=1 ){
result = d_minutes+"mins ago";
}else if(d_minutes==1){
result = "a mins ago";
}else if(d_minutes<=0 && d>0){
return Math.round(d)+"seconds ago";
}else{
var s = new Date(parseInt(currcovertDate));
result = s.getFullYear()+"-" +(s.getMonth()+1)+"-"+s.getDate();
}
return result;
}
);
Published in {{ life.time | jsDateDiff }}