将.NET JSON转换为ISO的日期

6 javascript python datetime json.net

如何从JSON.Net转换日期时间格式,例如:

/日期(11549.7亿+ 0700)/

到ISO- ?? 格式2011-12-18T23:34:59Z

最好是Python或Javascript.

我决定使用后者,因为它似乎在JS世界中使用最广泛,人性化且可自然排序.我将基于每个用户存储偏移量.

如果一个实现再次有点问,如果有人可以告诉我两种格式的正确名称,我可能会更好地理解如何转换.

ari*_*iel 1

jsonDate = "/Date(1154970000000+0700)/";

var strDate = parseInt(jsonDate.replace(/\/Date\(([-\d]+).*$/, "$1"));
var strHour = parseInt(jsonDate.replace(/.*\d([+-]\d\d).*$/, "$1"), 10);
var strMin = parseInt(jsonDate.replace(/.*\d([+-])\d\d(\d\d).*$/, "$1$2"), 10);

var date = new Date(strDate);
if (!isNaN(strHour)) date.setHours(date.getHours() + strHour);
if (!isNaN(strMin)) date.setMinutes(date.getMinutes() + strMin);

var out = date.toISOString();
Run Code Online (Sandbox Code Playgroud)

以及转换为 ISO 的函数:

var toISOString = Date.prototype.toISOString ?
    function(d){return d}:
    (function(){
        function t(i){return i<10?"0"+i:i};
        function h(i){return i.length<2?"00"+i:i.length<3?"0"+i:3<i.length?Math.round(i/Math.pow(10,i.length-3)):i};
        function toISOString(){
            return "".concat(
                this.getUTCFullYear(), "-",
                t(this.getUTCMonth() + 1), "-",
                t(this.getUTCDate()), "T",
                t(this.getUTCHours()), ":",
                t(this.getUTCMinutes()), ":",
                t(this.getUTCSeconds()), ".",
                h("" + this.getUTCMilliseconds()), "Z"
            );
        };
        return function(d){
            d.toISOString = toISOString;
            return d;
        }
    })();
Run Code Online (Sandbox Code Playgroud)