• js jq插件 显示中文时间戳 刚刚 N分钟前 N小时前 今天 上午 下午 日期格式化


     注:页面需提前引用JQ

    ; $.fn.extend({
        /*
        ** notes: 获取13位时间戳的简单操作
        ** new Date('2018-02-01 15:10:00').getTime() // Date类型使用getTime方法
        ** "/Date(1517469000000)/".substring(6,19) // C#后台返回的DateTime数据
        */
        /*
        ** author:lttr <www.cnblogs.com/GoCircle>
        ** date:2018-02-01
        ** 对13位时间戳的扩展显示为【不久前,刚刚,N分钟前,N小时前,N天前,N周前,N月前,N年N月N日】的处理
        ** eg.
        ** $(1517469000000).commonTimeStamp();  // 1分钟前
        */
        "commonTimeStamp": function () {
            let selfTime = ((this.selector || $(this)[0]) + Array(13).join('0')).slice(0, 13) - 0,   // 补全为13位  PHP时间戳为10位
                oneselfDate = new Date(selfTime),
                diffValue = new Date().getTime() - selfTime,
                monthC = diffValue / 2592000000,// 月1000 * 60 * 60 * 24 * 30
                weekC = diffValue / 604800000,  // 周1000 * 60 * 60 * 24 * 7
                dayC = diffValue / 86400000,    // 天1000 * 60 * 60 * 24
                hourC = diffValue / 3600000,    // 时1000 * 60 * 60
                minC = diffValue / 60000;       // 分1000 * 60
            return diffValue < 0 ? '不久前' :// 如果本地时间反而小于变量时间
                monthC > 12 ? (oneselfDate.getFullYear() + '年' + Array(2 - ('' + oneselfDate.getMonth() + 1).length + 1).join(0) + (oneselfDate.getMonth() + 1) + '月' + Array(2 - ('' + oneselfDate.getDate()).length + 1).join(0) + oneselfDate.getDate() + '日') : // 超过1年,直接显示年月日
                monthC >= 1 ? (parseInt(monthC) + '月前') :
                weekC >= 1 ? (parseInt(weekC) + '周前') :
                dayC >= 1 ? (parseInt(dayC) + '天前') :
                hourC >= 1 ? (parseInt(hourC) + '小时前') :
                minC >= 1 ? (parseInt(minC) + '分钟前') : '刚刚';
        },
        /*
        ** author:lttr <www.cnblogs.com/GoCircle>
        ** date:2018-10-22
        ** 对13位时间戳的扩展显示为【今天 上午N:N,昨天 上午N:N,上午N:N】的处理
        ** eg.
        ** $(1517469000000).specificTimeStamp();  // 下午15:10
        */
        "specificTimeStamp": function () {
            let oneselfTime = new Date('2018-10-21 00:00:00').getTime(),   // 补全为13位  PHP时间戳为10位  
                parTime = new Date(oneselfTime),
                diffDay = parseInt((new Date().getTime() - oneselfTime) / 86400000);// 天1000 * 60 * 60 * 24
            return (diffDay == 1 ? "昨天 " : diffDay == 0 ? "今天 " : "") +
                   ((parTime.getHours() / 12 > 1 ? "下午" : "上午") +
                   Array(2 - ('' + parTime.getHours()).length + 1).join(0) + parTime.getHours() + ":" +
                   Array(2 - ('' + parTime.getMinutes()).length + 1).join(0) + parTime.getMinutes());
        },
        /*
        ** author:lttr <www.cnblogs.com/GoCircle>
        ** date:2018-02-01
        ** 对13位时间戳的扩展,将时间转化为指定格式的String
        ** 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
        ** 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符
        ** eg.
        ** $(1517469000000).timeFormat("yyyy-MM-dd hh:mm:ss.f");  // 2018-02-01 15:10:00.0
        */
        "timeFormat": function (fmt) {
            let selfTime = new Date(((this.selector || $(this)[0]) + Array(13).join('0')).slice(0, 13) - 0),   // 补全为13位  PHP时间戳为10位
                o = {
                    "q+": Math.floor((selfTime.getMonth() + 3) / 3), //季度
                    "M+": selfTime.getMonth() + 1,                   //月份
                    "d+": selfTime.getDate(),                        //
                    "h+": selfTime.getHours(),                       //小时
                    "m+": selfTime.getMinutes(),                     //
                    "s+": selfTime.getSeconds(),                     //
                    "f": selfTime.getMilliseconds()                  //毫秒
                };
            if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (selfTime.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (let k in o)
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return fmt;
        }
    });
  • 相关阅读:
    Delphi中的钩子函数HOOK详解
    Delphi好书推荐
    Windows通知栏图标高级编程概述
    关于开机自动运行程序和自动启动服务
    如何在一个窗体中嵌入另一个窗体
    三层中如何在服务器与客户端之间传输自定义的'Record'类型数据的例子
    Delphi中的钩子函数HOOK详解
    STL(转)
    默认参数(c++)
    STL2
  • 原文地址:https://www.cnblogs.com/GoCircle/p/8400498.html
Copyright © 2020-2023  润新知