素材牛VIP会员
跟当前时间比较,显示时间差距?
 醉***o  分类:Html5  人气:1331  回帖:4  发布于6年前 收藏

如图:

将日期跟当前时间比较,并显示相差的时间如图展示,想封装一个方法,但是具体不知道该怎么弄好,求大神指点迷津。

自己在各路大神点思路下,自己给弄了一个,如下:

//与当前时间比较
function getDate(time){
    var str = time;
    //将字符串转换成时间格式
    var timePublish = new Date(str);
    var timeNow = new Date();
    var minute = 1000 * 60;
    var hour = minute * 60;
    var day = hour * 24;
    var month = day * 30;
    var diffValue = timeNow - timePublish;
    var diffMonth = diffValue / month;
    var diffWeek = diffValue / (7 * day);
    var diffDay = diffValue / day;
    var diffHour = diffValue / hour;
    var diffMinute = diffValue / minute;
   
    if (diffValue < 0) {
       console.log("错误时间");
    }
    else if (diffMonth > 3) {
        result = timePublish.getFullYear()+"-";
        result += (timePublish.getMonth() + 1) + "-";
        result += timePublish.getDate();
        // $.toptips(result);
    }
    else if (diffMonth > 1) {
        result = parseInt(diffMonth) + "月前";
    }
    else if (diffWeek > 1) {
        result = parseInt(diffWeek) + "周前";
    }
    else if (diffDay > 1) {
        result = parseInt(diffDay) + "天前";
    }
    else if (diffHour > 1) {
        result = parseInt(diffHour) + "小时前";
    }
    else if (diffMinute > 1) {
        result = parseInt(diffMinute) + "分钟前";
    }
    else {
        result = "刚刚";
    }

    return result;
}
 标签:html5javascript

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv5 码农
ah***xr 软件测试工程师 6年前#1
    var date1 = "2017-9-21 10:34"
    function changeTime(date){
        var timestamp1 = Date.parse(new Date(date))/1000;
        var timestamp2 = Date.parse(new Date())/1000;
         var time = timestamp2-timestamp1;
         if(time<60){
            return time+"秒前"
         }else if(time>60&&time<3600){
             var mins = Math.floor(time/60);
            return mins+"分前"
         }else if(time>3600&&time<86400){
            var hours = Math.floor(time/3600);
             return hours+"小时前"
         }else if(time>86400){
        var days = Math.floor(time/86400);
             return days+"天前"
         }
    }
    var time = changeTime(date1);
Lv1 新人
ze***an UI设计师 6年前#2
function diffTime(dateStr) {
  const diff = new Date(new Date() - new Date(dateStr));
  const year = diff.getUTCFullYear()-1970
  const month = diff.getUTCMonth()
  const day = diff.getUTCDate()-1;
  const hours = diff.getUTCHours();
  const minutes = diff.getUTCMinutes();
  const seconds = diff.getUTCSeconds();

  return {
    year,
    month,
    day,
    hours,
    minutes,
    seconds
  }
}

//{year: 0, month: 0, day: 1, hours: 23, minutes: 58, seconds: 10}
console.log(diffTime('2017-09-25 22:25:08')) 
Lv5 码农
38***38 职业无 6年前#3

直接给你代码就没意思了,给你提供个思路吧
主要说下是怎么得出这个时间差距的,通过前后两个时间戳相减得来的,比如说我要算 1506565621 这个时间戳和当前时间 1506565623 差距,直接把这个两个时间戳相减 得出的就是2,即为2秒前

依照这个思路,时间戳都是基于秒数来递增的,60s=1min,如果相差为60就为1分钟前,依次类推,一小时等于多少秒,将两个时间戳相减得到的数依次除以分钟、小时、天数对于的秒数,就可以判断为几秒前或者是几分钟前

Lv6 码匠
85***32 交互设计师 6年前#4

考虑下年、月、日、时、分的情况,主要是通过对比时间,分成六个级别【年、月、日、时、分、1分钟内】,哪个级别匹配到了就拿出结果即可:

function diffTime(dataStr){
    var nowDate = new Date().getTime(),
        oldDate = new Date(dataStr).getTime(),
        diffTime = parseInt((nowDate - oldDate)/1000,10),
        oneMinute = 60,
        oneHour = 60 * oneMinute,
        oneDay = 24 * oneHour,
        oneMonth = 30 * oneDay,
        oneYear = 12 * oneMonth,
        compareArr = [oneYear,oneMonth,oneDay,oneHour,oneMinute],
        postfix = ['年前','个月前','天前','个小时前','分钟前','1分钟内'],
        diffYear,diffMonth,diffDay,diffHour,diffMinute,len=5;
    for(var i =0; i< len ;i++){
        var diff = Math.floor(diffTime/compareArr[i]);
        if(diff > 0){
            return diff + postfix[i];
        }
        else if(i === len -1 && diff === 0){
            return postfix[len];
        }
    }
}
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取