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,'\\');

05-11 16:25