从网络服务解析日期

IT技术 javascript jquery json web-services datetime
2021-02-24 08:39:06

我从网络服务中获取日期,它们看起来像这样:

/Date(1310187160270+1200)/

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

我在谷歌上搜索了一下,找不到合适的答案 - 这可能部分是因为我不确定这种类型的日期对象被称为什么 - 所以如果有人也能阐明这一点,那将不胜感激。

2个回答
var date = new Date(1310187160270+1200); 
console.log(date)

回报

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

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

var returnVariable = "/Date(1346713200000+0100)/";
var d = new Date(parseFloat(returnVariable.replace("/Date(", "").replace(")/", ""))); 
+ 号表示偏移量 - 所以时间是一样的。我在 GMT +2,你在 GMT +12
2021-04-23 08:39:06
这不能正确处理偏移。请参阅@Bergi 的回答。
2021-04-25 08:39:06
大声笑 - 那是因为我的电脑设置为南非时间:)。我假设你的时间设置为新西兰时间 - 我们相隔 10 小时
2021-05-16 08:39:06
这将在"+1200"12 小时 0 分钟时将偏移量视为 1200 毫秒。
2021-05-16 08:39:06

由于上一个答案不处理时区偏移,我将抛出我的版本:

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+0200, 或Fri, 08 Jul 2011 16:52:40 GMT