JSON日期时间格式化

使用 JavaScriptSerializer 序列化生成 Json 字符串时,DateTime 会被转成形如 /Date(1369377245460)/ 的格式。

以下函数用于格式化输出时间,使用方法类似于C# 的 Datetime.ToString

//日期格式转换
function formatDate(str, format) {
    if (!str) return '';

    var i = parseInt(str.match(/[-]*\d+/g)[0]);
    if (i < 0) return '';
    var d = new Date(i);
    if (d.toString() == 'Invalid Date') return '';

    //处理客户端时区不同导致的问题
    //480 是UTC+8
    var utc8Offset = 480;
    d.setMinutes(d.getMinutes() + (d.getTimezoneOffset() + 480));

    format = format || 'MM/dd hh:mm:ss tt';

    var hour = d.getHours();
    var month = FormatNum(d.getMonth() + 1)

    var re = format.replace('YYYY', d.getFullYear())
    .replace('YY', FormatNum(d.getFullYear() % 100))
    .replace('MM', FormatNum(month))
    .replace('dd', FormatNum(d.getDate()))
    .replace('hh', hour == 0 ? '12' : FormatNum(hour <= 12 ? hour : hour - 12))
    .replace('HH', FormatNum(hour))
    .replace('mm', FormatNum(d.getMinutes()))
    .replace('ss', FormatNum(d.getSeconds()))
    .replace('tt', (hour < 12 ? 'AM' : 'PM'));

    return re;

    function FormatNum(num) {
        num = Number(num);
        return num < 10 ? ('0' + num) : num.toString();
    }
}
console.log(formatDate('/Date(1369377245460)/', 'dd/MM HH:mm:ss'));
原文地址:https://www.cnblogs.com/straybird/p/3096868.html