JS判断时间几天前,几小时,几分,几秒前

 

js 仿朋友圈的时间显示 刚刚 几天前,几小时,几分,几秒前

 

复制代码
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) {
          // 如果时间格式为2020/07/09 21:43:19.000  需要去掉.000 不然ios和firefox会有问题
return Date.parse(dateStr.replace(/-/gi, "/"));
}  

console.log(this.getDateDiff("2020-07-03 10:03:19.000"));
复制代码

 

posted @   泠风lj  阅读(2593)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示