在JavaScript中解析JSON(ISO8601)日期字符串

bob*_*dev 5 javascript date iso8601

我可以创建一个JavaScript日期对象:

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

这将使用浏览器的时区编写日期.但我应该能够做到(没有'Z'):

var d=new Date('2012-08-07T07:47:46');
document.write(d);
Run Code Online (Sandbox Code Playgroud)

返回与上面相同,但根据ISO8601标准,没有时区(例如+01:00)且没有'Z'的字符串,应在本地时区考虑日期.所以上面的第二个例子应该将日期时间写为上午7:47.

我从服务器获取日期时间字符串,我想要显示该日期时间.有任何想法吗?

jru*_*rue 6

我发现这个脚本效果很好.它扩展了Date.parse方法.

https://github.com/csnover/js-iso8601/

Date.parse('2012-08-07T07:47:46');
Run Code Online (Sandbox Code Playgroud)

但是它不适用于new Date()构造函数.


Pra*_*ran -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));
Run Code Online (Sandbox Code Playgroud)

摘自:Mozilla

  • 这会创建一个 ISO 日期字符串,但不会解析它 (4认同)