关于javascript:从webservice解析日期

Parsing Date from webservice

我正在从一个WebService获取日期,它们看起来如下:

/Date(1310187160270+1200)/

如何将其转换为JavaScript中的日期对象?

我在谷歌上搜索了一下,找不到合适的答案——这可能部分是因为我不太确定这种约会对象叫什么——所以如果有人也能了解这一点,那将是值得赞赏的。


1
2
var date = new Date(1310187160270+1200);
console.log(date)

退货

2011年7月9日星期六06:52:41 GMT+0200(南非标准时间)

如果您需要将其剥离为问题:

1
2
var returnVariable ="/Date(1346713200000+0100)/";
var d = new Date(parseFloat(returnVariable.replace("/Date(","").replace(")/","")));


由于前面的答案不处理时区偏移,所以我将加入我的版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
function fromDateString(str) {
    var res = str.match(/\/Date\((\d+)(?:([+-])(\d\d)(\d\d))?\)\//);
    if (res == null)
        return new Date(NaN); // or something that indicates it was not a DateString
    var time = parseInt(res[1], 10);
    if (res[2] && res[3] && res[4]) {
        var dir = res[2] =="+" ? -1 : 1,
            h = parseInt(res[3], 10),
            m = parseInt(res[4], 10);
        time += dir * (h*60+m) * 60000;
    }
    return new Date(time);
}

正确的结果是Fri Jul 08 2011 18:52:40 GMT+0200Fri, 08 Jul 2011 16:52:40 GMT