【问题标题】:Convert .NET date format into JavaScript date将 .NET 日期格式转换为 JavaScript 日期
【发布时间】:2012-02-16 12:28:08
【问题描述】:

我为序列化日期属性返回了以下 json:

/日期(1392508800000+0000)/

谁能告诉我如何从中获取 javascript 日期?

【问题讨论】:

    标签: javascript


    【解决方案1】:
    if (!Date.parseJSON) {
        Date.parseJSON = function (date) {
            if (!date) return "";
            return new Date(parseFloat(date.replace(/^\/Date\((\d+)\)\/$/, "$1")));
        };
    }
    

    然后

    var myVar = Date.parseJSON("/Date(1392508800000+0000)/")
    

    编辑

    我创建了一个函数,它将递归循环通过返回的 JSON 对象并修复任何日期。 (不幸的是它确实依赖于 jQuery),但它是:

    // Looks through the entire object and fix any date string matching /Date(....)/
    function fixJsonDate(obj) {
        var o;
        if ($.type(obj) === "object") {
            o = $.extend({}, obj);
        } else if ($.type(obj) === "array") {
            o = $.extend([], obj);
        } else return obj;
    
    
        $.each(obj, function (k, v) {
    
            if ($.type(v) === "object" || $.type(v) === "array") {
                o[k] = fixJsonDate(v);
            } else {
                if($.type(v) === "string" && v.match(/^\/Date\(\d+\)\/$/)) {
                    o[k] = Date.parseJSON(v);
                }
                // else don't touch it
            }
        });
        return o;
    }
    

    然后你像这样使用它:

    // get the JSON string
    var json = JSON.parse(jsonString);
    json = fixJsonDate(json);
    

    【讨论】:

    • 这实际上可以很好地替换 JSON 字符串中的所有日期 /\/Date((\d+)(?:[-\+]\d+)?)\//i;跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2017-10-12
    • 2012-05-28
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2011-08-13
    相关资源
    最近更新 更多