【问题标题】:Parse JSON (ISO8601) date string解析 JSON (ISO8601) 日期字符串
【发布时间】:2012-08-07 10:12:36
【问题描述】:

我可以创建一个 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。

我从服务器获取一个日期时间字符串,我想准确地显示那个日期时间。有什么想法吗?

【问题讨论】:

    标签: javascript date iso8601


    【解决方案1】:

    我发现这个脚本运行良好。它扩展了 Date.parse 方法。

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

    Date.parse('2012-08-07T07:47:46');
    

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

    【讨论】:

      【解决方案2】:

      你说得对,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

      【讨论】:

      • 这会创建一个 ISO 日期字符串,它不会解析它
      猜你喜欢
      • 2014-11-14
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2018-01-12
      • 2013-10-03
      • 2012-10-28
      相关资源
      最近更新 更多