解析JSON(ISO8601)日期字符串

5

我可以使用以下代码创建一个JavaScript日期对象:

var d=new Date('2012-08-07T07:47:46Z');
document.write(d);

这将使用浏览器的时区来写入日期。但我应该能够这样做(没有'Z'):
var d=new Date('2012-08-07T07:47:46');
document.write(d);

这将返回与上面相同的结果,但根据ISO8601标准,没有时区(例如+01:00)且没有“Z”的字符串,应将日期视为本地时区。因此,上面的第二个示例应将日期时间写为上午7:47。

我从服务器获取了一个日期时间字符串,我想要精确地显示该日期时间。有什么建议吗?

2个回答

6

-1

你说得对,JavaScript 与 ISO8601 不兼容。

使用此函数将其转换为所需格式:

function ISODateString(d) {
  function pad(n){
    return n<10 ? '0'+n : n
  }
  return d.getUTCFullYear()+'-'
  + pad(d.getUTCMonth()+1)+'-'
  + pad(d.getUTCDate())+'T'
  + pad(d.getUTCHours())+':'
  + pad(d.getUTCMinutes())+':'
  + pad(d.getUTCSeconds())+'Z'
}
var d = new Date();
print(ISODateString(d));

取自: Mozilla


4
这将创建一个 ISO 日期字符串,但不会解析它。 - Kieren Johnstone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接