将JSON datetime对象转换为JavaScript对象

将JSON datetime对象转换为JavaScript对象,javascript,json,datetime,Javascript,Json,Datetime,我的JSON返回如下所示的对象 "/Date(1307514780000+0530)" 如何将其转换为JavaScript日期时间对象? 另外,+0530是什么意思?通过“我的JSON”,我猜想您指的是Microsoft ASP.NET传递日期时间对象的方式,不是您所写的方式,而是在末尾加了斜杠: /Date(1307514780000+0530)/ JSON不支持本机JavaScript日期类型,因此这实际上是一个简单的JSON字符串,但Microsoft对此进行了更多的破解,并实际发送

我的JSON返回如下所示的对象

"/Date(1307514780000+0530)" 
如何将其转换为JavaScript日期时间对象?
另外,+0530是什么意思?

通过“我的JSON”,我猜想您指的是Microsoft ASP.NET传递日期时间对象的方式,不是您所写的方式,而是在末尾加了斜杠:

/Date(1307514780000+0530)/
JSON不支持本机JavaScript日期类型,因此这实际上是一个简单的JSON字符串,但Microsoft对此进行了更多的破解,并实际发送了以下内容:

\/Date(1307514780000+0530)\/
即使不需要反斜杠,JSON字符串也允许这样做。这两个字符串与JSON客户端软件相同,但当Microsoft JScript看到这些反斜杠时,它会将其视为一种特殊结构。而且,是的,这是一个至高无上的黑客

符号前的值也可以是“-”是自1970-01-01 00:00:00 UTC以来的毫秒数。符号及其后的值表示表示表示时区,将值转换为本机JavaScript日期对象时不需要该时区。该符号表示时区是在UTC+之前还是在UTC之后,数字格式为“HHMM”,其中“HH”是小时数,“MM”是分钟数。在本例中,“+0530”是与印度标准时间相同的时区偏移量,也称为“IST”

要使用标准的跨浏览器兼容JavaScript将其转换为本机日期对象,请执行以下操作:

function getDateFromAspString(aspString) {
  var epochMilliseconds = aspString.replace(
      /^\/Date\(([0-9]+)([+-][0-9]{4})?\)\/$/,
      '$1');
  if (epochMilliseconds != aspString) {
      return new Date(parseInt(epochMilliseconds));
  }
}
请注意,如果字符串不是ASP.NET日期时间字符串,则此函数不会返回任何内容。您可以将===结果与undefined进行比较,以查看是否返回了任何内容

在我的浏览器上,此调用:

getDateFromAspString("/Date(1307514780000+0530)/").toString()
返回此字符串:

"Wed Jun 08 2011 01:33:00 GMT-0500 (Central Daylight Time)"
另见:

Microsoft MSDN:
通过“My JSON”,我猜测您指的是Microsoft ASP.NET传递日期时间对象的方式,与您所写的方式不同,但结尾也有一个斜杠:

/Date(1307514780000+0530)/
JSON不支持本机JavaScript日期类型,因此这实际上是一个简单的JSON字符串,但Microsoft对此进行了更多的破解,并实际发送了以下内容:

\/Date(1307514780000+0530)\/
即使不需要反斜杠,JSON字符串也允许这样做。这两个字符串与JSON客户端软件相同,但当Microsoft JScript看到这些反斜杠时,它会将其视为一种特殊结构。而且,是的,这是一个至高无上的黑客

符号前的值也可以是“-”是自1970-01-01 00:00:00 UTC以来的毫秒数。符号及其后的值表示表示表示时区,将值转换为本机JavaScript日期对象时不需要该时区。该符号表示时区是在UTC+之前还是在UTC之后,数字格式为“HHMM”,其中“HH”是小时数,“MM”是分钟数。在本例中,“+0530”是与印度标准时间相同的时区偏移量,也称为“IST”

要使用标准的跨浏览器兼容JavaScript将其转换为本机日期对象,请执行以下操作:

function getDateFromAspString(aspString) {
  var epochMilliseconds = aspString.replace(
      /^\/Date\(([0-9]+)([+-][0-9]{4})?\)\/$/,
      '$1');
  if (epochMilliseconds != aspString) {
      return new Date(parseInt(epochMilliseconds));
  }
}
请注意,如果字符串不是ASP.NET日期时间字符串,则此函数不会返回任何内容。您可以将===结果与undefined进行比较,以查看是否返回了任何内容

在我的浏览器上,此调用:

getDateFromAspString("/Date(1307514780000+0530)/").toString()
返回此字符串:

"Wed Jun 08 2011 01:33:00 GMT-0500 (Central Daylight Time)"
另见:

Microsoft MSDN:
+0530是你的时区你比格林威治标准时间早5小时30分钟。我相信剩下的时间是从1970年1月1日开始的UNIX纪元时间毫秒。您是否尝试发送PHP的DateTime对象?这可能会帮助您:这是完整的回答吗?+0530是您的时区您比格林威治标准时间提前5小时30分钟。我相信剩下的时间是从1970年1月1日开始的UNIX纪元时间毫秒。您是否尝试发送PHP的DateTime对象?这可能会帮助你:这是完整的回答吗?