小程序过滤器(wxs)-格式化时间

小程序利用过滤wxs格式化时间

var comm = {
        /**
     * 获取当前时间或格式化时间戳或获取时间戳,
     * @param str  格式化时间数据,不传默认为getDate()
     * @param ostyle  返回时间风格:'-'或'/'或'zh',不传默认为'-'
     */
    getFormatDate: function (str, ostyle) {
        var oDate = getDate();
        if (str) {
            //当str存在时为格式化时间戳
            if (typeof str === "string") {
                if (str.indexOf("T") > -1) {
                    str = comm.getdisposeTime(str); // 2019-04-07T16:00:00.000+0000格式
                } else if (str.indexOf(".") > -1) {
                    str = str.substring(0, str.indexOf(".")); // 有些日期接口返回带有.0。
                } else if (comm.isDatetime(str) && str.length > 10) { //2021-01-01 12:00:00
                    // str += ' 00:00:00';
                } else if (comm.strDate(str) && (str.length > 8 && str.length <= 10)) { //2021-01-01
                    str += ' 00:00:00';
                } else if (comm.isTime(str) && (str.length <= 8)) { //12:00:00
                    var strYear = oDate.getFullYear(),
                        strMonth = oDate.getMonth() + 1,
                        strDay = oDate.getDate();
                    str = strYear + '-' + comm.getNow(strMonth) + '-' + comm.getNow(strDay) + ' ' + str;
                }
                // 解决IOS上无法从str parse 到Date类型问题
                str = str.replace(getRegExp('-', 'g'), '/');
            }
            oDate = getDate(str);
        }
        var oYear = oDate.getFullYear(),
            oMonth = oDate.getMonth() + 1,
            oDay = oDate.getDate(),
            oHour = oDate.getHours(),
            oMin = oDate.getMinutes(),
            oSen = oDate.getSeconds();
        return comm.getDataTimeInfo(str, oYear, oMonth, oDay, oHour, oMin, oSen, ostyle);
    },
        /**
     * 获取当前时间或格式化时间戳或获取时间戳,
     * @param str  格式化时间数据,不传默认为getDate()
     * @param year  年
     * @param month  月
     * @param day  日
     * @param h  时
     * @param m  分
     * @param s  秒
     * @param style  返回时间风格:'-'或'/'或'zh',不传默认为'-'
     * @returns {string}  obj = {
                            oYmdHms:年月日时分秒,
                            oDateTime: 年-月-日  时:分:秒,
                            nowToday: 年-月-日 00:00:00,
                            nowTodays: 年-月-日  23:59:59,
                            oDateHms: 年-月-日  时:分:00,
                            oDateHm: 年-月-日  时:分,
                            oMdHm: 月-日  时:分,
                            oDate: 年-月-日,
                            oDateYm: 年-月,
                            oTime: 时:分:秒,
                            oHm: 时:分,
                            xtstNowToday:,当天23:59时时间戳
                            xtstNowNextDay:,当天0點时时间戳
                            xtstNowDate:,當前時間戳
                            xtstTime:,需要格式化时间戳的时间
                        }
     */
    getDataTimeInfo: function (str, year, month, day, h, m, s, style) {
        var ostyle = '-',
            ostyle1 = '-',
            ostyle2 = '';
        if (style == '/') {
            ostyle = '/';
            ostyle1 = '/';
            ostyle2 = '';
        } else if (style == 'zh') {
            ostyle = '年';
            ostyle1 = '月';
            ostyle2 = '日';
        }
        var obj = {
            oYmdHms: year + '' + comm.getNow(month) + '' + comm.getNow(day) + '' + comm.getNow(h) + '' + comm.getNow(
                m) + '' + comm.getNow(s),
            oYmdHm: year + '' + comm.getNow(month) + '' + comm.getNow(day) + '' + comm.getNow(h) + '' + comm.getNow(
                m),
            oDateTime: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + comm.getNow(h) +
                ':' + comm.getNow(m) + ':' + comm.getNow(s),
            nowToday: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + '00:00:00',
            nowTodays: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + '23:59:59',
            oDateHms: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + comm.getNow(h) +
                ':' + comm.getNow(m) + ':00',
            oDateHm: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + comm.getNow(h) +
                ':' + comm.getNow(m),
            oDate: year + ostyle + comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2,
            oMdHm: comm.getNow(month) + ostyle1 + comm.getNow(day) + ostyle2 + ' ' + comm.getNow(h) +
                ':' + comm.getNow(m),
            oDateYm: year + ostyle + comm.getNow(month) + ostyle1,
            oTime: comm.getNow(h) + ':' + comm.getNow(m) + ':' + comm.getNow(s),
            oHm: comm.getNow(h) + ':' + comm.getNow(m),
            xtstNowToday: (getDate(getDate(getDate().getTime() - 24 * 60 * 60 * 1000).setHours(23, 59, 59, 999))).getTime(),
            xtstNowNextDay: (getDate(getDate(getDate().getTime() - 24 * 60 * 60 * 1000).setHours(0, 0, 0, 0))).getTime(),
            xtstNowDate: (getDate()).valueOf(),
            xtstTime: getDate(str).getTime()
        }
        return obj;
    },
    /**
     * 判断是否小于10,若是则加0
     * @param s  时间加 0
     * @returns {string}
     */
    getNow: function (s) {
        return s < 10 ? '0' + s : s;
    },
    /**
     * 
     * @param date 传递过来的时间字符串 特殊处理格式 2019-04-07T16:00:00.000+0000
     */
    getdisposeTime: function (date) {
        var dateee = getDate(date).toJSON();
        var date1 = getDate(+getDate(dateee) + 8 * 3600 * 1000).toISOString().replace(getRegExp('T', 'g'), " ").replace(getRegExp('\.[\d]{3}Z'), '');
        return date1;
    },
    /**
     * 判断短时间格式 12:00:00
     * @param str  时间
     * @returns Boolean
     */
    isTime: function (str) {
        var a = str.match(getRegExp('(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})', 'g'));
        if (a == null) {
            // alert('输入的参数不是时间格式');
            return false;
        }
        if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
            // alert("时间格式不对");
            return false
        }
        return true;
    },
    /**
     * 判断短日期格式 2021-01-01
     * @param str  时间
     * @returns Boolean
     */
    strDate: function (str) {
        var r = str.match(getRegExp('(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})', 'g'));
        if (r == null) return false;
        var d = getDate(r[1], r[3] - 1, r[4]);
        return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
    },
    /**
     * 判断日期格式 2021-01-01 12:00:00
     * @param str  时间
     * @returns Boolean
     */
    isDatetime: function (date) {
        var regex = getRegExp('(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]', 'g');
        if (!regex.test(date)) {
            // alert("格式不正确!请输入正确的时间格式,如:2010-07-07 09:12:00");
            return false;
        }
        // alert("格式正确!");
        return true;
    },
   /**
     * @param str 传递过来的时间字符串 特殊处理格式 2021-12-30.18.1.49.785000000
     */
    getSpecialDate: function (str, ostyle) {
        if (str) {
            //返回格式有改变的处理 2021-12-30 11:33:04.448
            if (str.indexOf(' ') != -1 && str.indexOf(':') != -1) {
                var getnew = str.substring(0, 16);
                var finaltime = getnew.replace(getRegExp('-', 'g'), "/");
                return finaltime;
            }
            var getNewtime = str.replace(getRegExp(' ', 'g'), "");
            var getDateArr = getNewtime.split('.');
            var getDateStr = getDateArr[0] + ' ';
            if (getDateArr[1]) {
                getDateStr += comm.getNow(getDateArr[1]);
            }
            if (getDateArr[2]) {
                getDateStr += ':' + comm.getNow(getDateArr[2]);
            }
            // if (getDateArr[3]) {
            //     getDateStr += ':'+comm.getNow(getDateArr[3])
            // }
            var finaltime = getDateStr.replace(getRegExp('-', 'g'), "/");
            if (ostyle) {
                return comm.getFormatDate(finaltime, ostyle);
            } else {
                return finaltime;
            }
        }
        return '';
    },
}    

 

posted @ 2022-04-25 15:29  时光独醒  阅读(31)  评论(0编辑  收藏  举报