实现时间 ( 刚刚 ) 和 ( ...秒前 ) 和 ( ...分钟前 ) 和 ( ...小时前 ) 和 ( ...天前 ) 和 ( ...月前 ) 和 ( ...年前 )

7 篇文章 0 订阅
7 篇文章 0 订阅
  • 感谢 csdn 提供平台
    效果图
    在这里插入图片描述
    在这里插入图片描述
 <script>
        // 时间搓是以 毫秒 为单位
        // 一秒等于 1000 毫秒 ( 以此内推 )
        var UNITS = {
            '年': 31557600000, // 63158623743
            '月': 2629800000,
            '天': 86400000,
            '小时': 3600000,
            '分钟': 60000,
            '秒': 1000
        }

        // 年 - 月 - 日  时 : 分 : 秒  ( 函数方法 )
        function formatTimestamp(time) {
            // T表示分隔符,Z表示的是UTC。
            // UTC:世界标准时间,在标准时间上加上8小时,即东八区时间,也就是北京时间。
            var date = new Date(time + 8 * 3600 * 1000);
            
            console.log(date.toJSON()) // 2020-10-10T12:00:00.000Z

            return date.toJSON().substr(0, 19).replace('T', ' '); //  返回 2020-10-10 12:00:00 格式
        }
        
         // 刚刚 ; ..秒前 ; ..分钟前; ..小时前 ; ..天前 ; ( 函数方法 )
        function humanize(milliseconds) {

            var humanize = '';
            // 遍历 UNITS 对象
            for (var key in UNITS) {

                // 如果时间差大于或者等于 UNITS[ key ]
                if (milliseconds >= UNITS[key]) {
                    
                    // 用时间差 / 符合条件的 UNITS[key] 求出值 + 当前的 key(单位) + 前
                    humanize = Math.floor(milliseconds / UNITS[key]) + key + '前';
                    
                    // 结束循环
                    break;
                }
            }

            // 返回需要显示的值
            return humanize || '刚刚';
        }

        //  当前时间减去传入时间 ( 函数方法 )
        function format(timestamp) {

            // 得到当前时间与传入时间的差
            var diff = Date.now() - timestamp

            // 这里  UNITS[ key ] , key 可以设置成 UNITS 任何一项 key (我这里设置成 “ 天 ” 是业务需求)
            if (diff < UNITS['天']) { 

                // 如果当前时间减去传入时间少于 86400000 , 调用 humanize 方法
                return humanize(diff)
            }

            // 如果当前时间减去传入时间大于 86400000 , 调用 formatTimestamp 方法
            return formatTimestamp(timestamp)
        }

        var str = format(1615535559887)
        console.log(str,'显示');
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值