【问题标题】:How to create Date object from the string date in Javascript for the first years of A.D?如何在公元的第一年从 Javascript 中的字符串日期创建 Date 对象?
【发布时间】:2011-04-24 06:03:53
【问题描述】:


我有下一个日期字符串:

“Thu Nov 14 0002 01:01:00 GMT+0200(GTB 标准时间)”

我正在尝试将其转换为 Date 对象:

date = new Date("Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)")  
=> Invalid Date {}

它不起作用。还有

date = new Date("Thu Nov 14 2 01:01:00 GMT+0200 (GTB Standard Time)")  
=> Invalid Date {}

也不行

但是

date = new Date("Thu Nov 14 2002 01:01:00 GMT+0200 (GTB Standard Time)")

作品

有谁知道解析它的优雅方法吗?

【问题讨论】:

    标签: javascript string parsing date


    【解决方案1】:

    Javascript 日期基于自 1970 年 1 月 1 日 00:00:00.000 UTC 以来的毫秒数。未定义之前的日期。

    您必须想出自己的方式来表示此类日期。

    edit — 话虽如此,Javascript 似乎愿意用与纪元的大得离谱的负偏移量来表示日期;不适合 32 位整数的偏移量。我怀疑你的日期的根本原因只是它的格式扰乱了解析器。日期缩写后应该有一个逗号。

    另一个问题(男孩,这比我想象的更有趣)是在 Chrome 和 Firefox 中,至少在 100 之前的任何一年都被视为 20 世纪一年的缩写。

    再次编辑 — 根据 Mozilla 文档,日期可以是纪元前 -100,000,000 天到其后 100,000,000 天之间的任何值。

    【讨论】:

      【解决方案2】:

      您可以设置任何日期。包括直接使用时间戳的分钟、小时和毫秒- 1970 年之前的日期是负整数。

      alert(new Date(-62076675540000).toUTCString());
      
      // >> Wed, 13 Nov 0002 23:01:00 GMT
      
      Or you can set the date as a string by replacing the years to make it over 1000,
      then subtracting the amount you added  with setFullYear()
      
      var d=new Date("Thu Nov 14 1002 01:01:00 GMT+0200 (GTB Standard Time)")
      d.setFullYear(d.getFullYear()-1000)
      alert(d.toUTCString())
      
      // >> Wed, 13 Nov 0002 23:01:00 GMT
      
      You can automate a conversion to timestamps-
      
      var s="Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)";
      var y=s.split(' ')[3], y2=5000+(+y);
      var d=new Date(s.replace(y,y2));
      d.setFullYear(d.getFullYear()-5000)
      var timestamp=+d;
      alert(timestamp)
      // >> -62076675540000
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-18
        • 2012-01-03
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        相关资源
        最近更新 更多