根据时间戳显示刚刚/几分钟前/几小时前/今天等等

规则是:
一分钟内显示刚刚
一小时内显示几分钟前
24小时内显示今天几点几分
24 - 48小时内显示昨天几点几分
一年内显示几月几日
一年前显示 年-月-日

function timestampFormat( timestamp ) {
    
    
    function zeroize( num ) {
    
    
        return (String(num).length == 1 ? '0' : '') + num;
    }

    var curTimestamp = parseInt(new Date().getTime() / 1000); //当前时间戳
    var timestampDiff = curTimestamp - timestamp; // 参数时间戳与当前时间戳相差秒数

    var curDate = new Date( curTimestamp * 1000 ); // 当前时间日期对象
    var tmDate = new Date( timestamp * 1000 );  // 参数时间戳转换成的日期对象

    var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate();
    var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds();

    if ( timestampDiff < 60 ) {
    
     // 一分钟以内
        return "刚刚";
    } else if( timestampDiff < 3600 ) {
    
     // 一小时前之内
        return Math.floor( timestampDiff / 60 ) + "分钟前";
    } else if ( curDate.getFullYear() == Y && curDate.getMonth()+1 == m && curDate.getDate() == d ) {
    
    
        return '今天' + zeroize(H) + ':' + zeroize(i);
    } else {
    
    
        var newDate = new Date( (curTimestamp - 86400) * 1000 ); // 参数中的时间戳加一天转换成的日期对象
        if ( newDate.getFullYear() == Y && newDate.getMonth()+1 == m && newDate.getDate() == d ) {
    
    
            return '昨天' + zeroize(H) + ':' + zeroize(i);
        } else if ( curDate.getFullYear() == Y ) {
    
    
            return  zeroize(m) + '月' + zeroize(d) + '日 ' + zeroize(H) + ':' + zeroize(i);
        } else {
    
    
            return  Y + '年' + zeroize(m) + '月' + zeroize(d) + '日 ' + zeroize(H) + ':' + zeroize(i);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45251189/article/details/114276681