js 类似发微博或者微信朋友圈的时间显示 刚刚 几天前

/*
** 时间戳显示为多少分钟前,多少天前的处理
** eg.
** console.log(dateDiff(1411111111111));  // 2014年09月19日
** console.log(dateDiff(1481111111111));  // 9月前
** console.log(dateDiff(1499911111111));  // 2月前
** console.log(dateDiff(1503211111111));  // 3周前
** console.log(dateDiff(1505283100802));  // 1分钟前
** 参数timestamp自动补全13位数值(不到毫秒的)。 */ var dateDiff = function (timestamp) { // 补全为13位 var arrTimestamp = (timestamp + '').split(''); for (var start = 0; start < 13; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0'; } } timestamp = arrTimestamp.join('') * 1; var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var now = new Date().getTime(); var diffValue = now - timestamp; // 如果本地时间反而小于变量时间 if (diffValue < 0) { return '不久前'; } // 计算差异时间的量级 var monthC = diffValue / month; var weekC = diffValue / (7 * day); var dayC = diffValue / day; var hourC = diffValue / hour; var minC = diffValue / minute; // 数值补0方法 var zero = function (value) { if (value < 10) { return '0' + value; } return value; }; // 使用 if (monthC > 12) { // 超过1年,直接显示年月日 return (function () { var date = new Date(timestamp); return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日'; })(); } else if (monthC >= 1) { return parseInt(monthC) + "月前"; } else if (weekC >= 1) { return parseInt(weekC) + "周前"; } else if (dayC >= 1) { return parseInt(dayC) + "天前"; } else if (hourC >= 1) { return parseInt(hourC) + "小时前"; } else if (minC >= 1) { return parseInt(minC) + "分钟前"; } return '刚刚'; };

  

 

群里的一个小伙伴(NightEagle)写的,共享出来了,我就做个记录。

 

function getDateDiff(dateStr) {
        var publishTime = getDateTimeStamp(dateStr) / 1000,
        d_seconds,
        d_minutes,
        d_hours,
        d_days,
        timeNow = parseInt(new Date().getTime() / 1000),
        d,

        date = new Date(publishTime * 1000),
        Y = date.getFullYear(),
        M = date.getMonth() + 1,
        D = date.getDate(),
        H = date.getHours(),
        m = date.getMinutes(),
        s = date.getSeconds();
        //小于10的在前面补0
        if (M < 10) {
                M = '0' + M;
        }
        if (D < 10) {
                D = '0' + D;
        }
        if (H < 10) {
                H = '0' + H;
        }
        if (m < 10) {
                m = '0' + m;
        }
        if (s < 10) {
                s = '0' + s;
        }

        d = timeNow - publishTime;
        d_days = parseInt(d / 86400);
        d_hours = parseInt(d / 3600);
        d_minutes = parseInt(d / 60);
        d_seconds = parseInt(d);

        if (d_days > 0 && d_days < 3) {
                return d_days + '天前';
        } else if (d_days <= 0 && d_hours > 0) {
                return d_hours + '小时前';
        } else if (d_hours <= 0 && d_minutes > 0) {
                return d_minutes + '分钟前';
        } else if (d_seconds < 60) {
                if (d_seconds <= 0) {
                        return '刚刚';
                } else {
                        return d_seconds + '秒前';
                }
        } else if (d_days >= 3 && d_days < 30) {
                return M + '-' + D + ' ' + H + ':' + m;
        } else if (d_days >= 30) {
                return Y + '-' + M + '-' + D + ' ' + H + ':' + m;
        }
}

function getDateTimeStamp(dateStr) {
        return Date.parse(dateStr.replace(/-/gi, "/"));
}  

  

转载于:https://www.cnblogs.com/tonnytong/p/6065527.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微博微信是中国最受欢迎的两大社交媒体应用,它们都采用了基于Redis的朋友关注模型。Redis是一种高性能的内存数据库,被广泛应用于实时数据的存储和处理。 微博微信的朋友关注模型类似,用户可以关注其他用户布的内容,当被关注的用户布新的内容时,关注者会收到通知。基于Redis实现的朋友关注模型具有以下特点: 首先,Redis具有出色的性能。由于Redis将数据都存储在内存中,可以读写速度非常快,特别适合处理实时数据。因此,在微博微信这种实时社交媒体应用中,使用Redis实现朋友关注模型可以保证性能表现。 其次,Redis具有高可用性和可扩展性。Redis的特性使得可以使用多节点架构来保证高可用性和数据的持久化。因此,在微博微信这种大规模用户的应用中,使用Redis可以轻松地对系统进行横向扩展,从而保证了可扩展性。 最后,用户关注模型是Redis天然的应用场景之一。Redis支持set、list等数据结构,非常适合存储用户的关注关系。将用户的关注关系存储在Redis中,可以方便地进行查询和更新,进而实现微博微信的朋友关注模型。 总之,微博微信的朋友关注模型基于Redis实现是一种非常优秀的选择。它保证了系统的性能、可扩展性和高可用性,同时也具有天然的应用场景。对于其他类似的实时社交应用,可以借鉴微博微信的实践,选择Redis作为朋友关注模型的实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值