JS將時間戳轉換為剛剛、N分鍾前、今天幾點幾分、昨天幾點幾分等表示法


使用Javascript語言,將時間戳轉換為類似新浪微博的時間的表示方法。 要求轉換規則: 1分鍾以內顯示為:剛剛 1小時以內顯示為:N分鍾前 當天以內顯示為:今天 N點N分(如:今天 22:33) 昨天時間顯示為:昨天 N點N分(如:昨天 10:15) 當年以內顯示為:N月N日 N點N分(如:02月03日 09:33) 今年以前顯示為:N年N月N日 N點N分(如:2000年09月18日 15:59)

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);
        }
    }
}

用法展示:

timestampFormat(1326170770); //2012年01月10日 12:46 timestampFormat(Date.parse('2016-10-11 15:26:10')/1000); //剛剛 timestampFormat(Date.parse('2016-10-11 15:10:10')/1000); //16分鍾前 timestampFormat(Date.parse('2016-10-11 10:10:10')/1000); //今天10:10 timestampFormat(Date.parse('2016-10-10 10:10:10')/1000); //昨天10:10 timestampFormat(Date.parse('2016-02-10 10:10:10')/1000); //02月10日 10:10 timestampFormat(Date.parse('2012-10-10 10:10:10')/1000); //2012年10月10日 10:10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM