如何转换此日期格式:/Date(1268524800000)/? [复制]
Posted
技术标签:
【中文标题】如何转换此日期格式:/Date(1268524800000)/? [复制]【英文标题】:How to convert this date format: /Date(1268524800000)/? [duplicate] 【发布时间】:2012-01-05 20:44:38 【问题描述】:可能重复:How to format a JSON date?
我正在通过 javascript 调用 JSON Web 服务,StartDate
字段是 /Date(1268524800000)/
。如何将其转换为人类可读的格式?d
【问题讨论】:
它是什么格式的?是时间戳吗?如果网络服务有文档,它应该在那里 同question 好吧,这种格式可能无法立即识别。我认为这么多反对票有点苛刻。 (但是 +1 @Nathan 发现了一个很棒的骗子) 网络服务帮助说类型是"type="xs:dateTime"" 自 1970-01-01 00:00:00 UTC 以来似乎是毫秒;表示的日期是 Sun 2010-03-14 00:00:00 UTC。 (这并没有回答如何转换它的问题,但它提供了一个线索,告诉你如果你使用的是 JavaScript 以外的其他语言。)当然,将它转换为人类可读格式的一种方法是训练自己阅读该格式。 8-) 【参考方案1】:试试这个:
var str = "/Date(1268524800000)/";
var num = parseInt(str.replace(/[^0-9]/g, ""));
var date = new Date(num);
alert(date);
小提琴:http://jsfiddle.net/dS2hd/
【讨论】:
如果数字是负数怎么办? 不应该是因为它确实代表了来自系统的日期 @TruMan1 - 1969 年之前的任何日期在 JavaScript 中都有一个负序列号。 在@gilly3 之前不知道该反向引用:/(\-?\d+)/.test(str) ? new Date(+RegExp.$1) : null;
这里给出的答案更快,因为它不需要正则表达式解析:***.com/a/2316066/163227【参考方案2】:
您可以使用正则表达式获取毫秒数,然后使用 Date 构造函数获取 Date 对象。一旦你有了你的日期对象,你就可以用它做任何你想做的事情。
var ms = parseInt("/Date(1268524800000)/".match(/\((\d+)\)/)[1]);
var d = new Date(ms);
alert(d.toString());
【讨论】:
【参考方案3】:您可以eval()
它,也可以提取数字并将其传递给Date
构造函数。
if (/^\/Date\((-?\d+)\)\/$/.test(val))
var serial = parseInt(RegExp.$1);
val = new Date(serial);
我看到日期表示为 /Date(1234567890000-0500)/
,因此可能需要更强大的程序来处理 UTC 偏移量。
【讨论】:
以上是关于如何转换此日期格式:/Date(1268524800000)/? [复制]的主要内容,如果未能解决你的问题,请参考以下文章