JSON中的日期格式化

Json字符串中的日期格式化函数

ConvertJsonDate: function (jd) {

        var d = new Date(parseInt(jd.replace("/Date(", "").replace(")/", ""), 10));

        if (d.toString().split("-").length > 1) {

            return d;

        }

        var month = {

            "Jan": 1,

            "Feb": 2,

            "Mar": 3,

            "Apr": 4,

            "May": 5,

            "Jun": 6,

            "Jul": 7,

            "Aug": 8,

            "Sep": 9,

            "Oct": 10,

            "Nov": 11,

            "Dec": 12

        };

        var str = d.toString().split(" "), dd = str[5] + "-" + month[str[1]] + "-" + str[2] + " " + str[3];

        var ddd = new Date(Date.parse(dd.replace(/-/g, "/")));

        var week = {

            "Mon": "/u65e5",

            "Tue": "/u4e00",

            "Wed": "/u4e8c",

            "Thu": "/u4e09",

            "Fri": "/u56db",

            "Sat": "/u4e94",

            "Sun": "/u516d",



            "0": "/u65e5",

            "1": "/u4e00",

            "2": "/u4e8c",

            "3": "/u4e09",

            "4": "/u56db",

            "5": "/u4e94",

            "6": "/u516d"

        };

        var o = {

            "M+": ddd.getMonth() + 1, //月份

            "d+": ddd.getDate(), //

            "h+": ddd.getHours() % 12 == 0 ? 12 : ddd.getHours() % 12, //小时

            "H+": ddd.getHours(), //小时 

            "m+": ddd.getMinutes(), //

            "s+": ddd.getSeconds(), //

            "q+": Math.floor((ddd.getMonth() + 3) / 3), //季度

            "S": ddd.getMilliseconds() //毫秒

        };

        var fmt = dd;

        if (arguments.length == 2) {

            fmt = arguments[1];

            if (/(y+)/.test(fmt)) {

                fmt = fmt.replace(RegExp.$1, (ddd.getFullYear() + "").substr(4 - RegExp.$1.length));

            }

            if (/(E+)/.test(fmt)) {//E(五);EE(周五),EEE(星期五)

                fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[ddd.getDay() + ""]);

            }

            for (var 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 unescape(fmt.replace(/\//g, '%'));

    }

需要注意的是,类似‘\u5468’为UTF8编码字符,需要将'\'替换为'%',然后调用unescape才能正常显示为中文。

如需把正常的代码转换成例如:"\u4f60\u597d\u554a"这样的字符串,需要调用方法escape(str).replace(/%/g,'\\');

你可能感兴趣的:(日期格式化)