zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    对坐标点的离散化
    线段树-离散化处理点
    树状数组
    线段树
    dfs
    vector
    go 参数传递的是值还是引用 (转)
    go 数组指针 指针数组
    go 协程
    go 接口实现
  • 原文地址:https://www.cnblogs.com/taochengyong/p/9341986.html
Copyright © 2011-2022 走看看