[英]Converting JSON datetime object to JavaScript object
我的 JSON 像这样返回 object
"/Date(1307514780000+0530)"
如何将此转换为我的 JavaScript 日期时间 object? 另外, +0530
是什么意思?
通过“我的 JSON”,我推测您指的是 Microsoft ASP.NET 传递日期时间 object 的方式,而不是您所写的,但在末尾还有一个斜杠:
/Date(1307514780000+0530)/
JSON 不支持本机 JavaScript Date()类型,所以这实际上是一个简单的 JSON 字符串,但微软在这方面做了一些修改:
\/Date(1307514780000+0530)\/
这对于 JSON 字符串是允许的,即使反斜杠不是必需的。 (这两个字符串与您的 JSON 客户端软件相同,但是当 Microsoft JScript 看到这些反斜杠时,它会将其视为特殊结构。而且,是的,这是一个至高无上的 hack。)
符号前的值(也可以是“-”)是自 1970-01-01 00:00:00 UTC 以来的毫秒数。 符号和它后面的值表示演示时区,不需要将值转换为本机 JavaScript Date() object。 该符号表示时区是在 (+) 之前还是之后 (-) UTC,并且数字的格式为“HHMM”,其中“HH”是小时数,“MM”是分钟数。 (在这种情况下,“+0530”是与印度标准时间相同的时区偏移,也就是“IST”。)
使用标准的跨浏览器兼容的 JavaScript 将其转换为本机Date() object:
function getDateFromAspString(aspString) {
var epochMilliseconds = aspString.replace(
/^\/Date\(([0-9]+)([+-][0-9]{4})?\)\/$/,
'$1');
if (epochMilliseconds != aspString) {
return new Date(parseInt(epochMilliseconds));
}
}
请注意,如果字符串不是 ASP.NET 日期时间字符串,则此 function 不会返回任何内容。 您可以将 (===) 结果与未定义进行比较,以查看是否返回了任何内容。
在我的浏览器上,这个调用:
getDateFromAspString("/Date(1307514780000+0530)/").toString()
返回此字符串:
"Wed Jun 08 2011 01:33:00 GMT-0500 (Central Daylight Time)"
也可以看看:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.