Dan*_*ert 11 javascript datetime
假设一个32位操作系统/浏览器,如果我设置一个超过2038年的日期,那么在JavaScript中创建的Date对象是否可以翻转到1970年?
在Mozilla的文件说,一年可设置为9999,但我不知道这是不是在所有的JavaScript实现一致的,或者如果这是的规范要求什么的准确描述.
我认为考虑到文档中的措辞,它似乎是使用64位数字来存储时间或以ISO日期格式存储实际数据.
有谁知道浏览器如何实现这一点?
Gre*_*reg 19
它不应该 - 根据ECMAScript规范 secion 15.9.1.1:
自UTC时间1970年1月1日起,时间以ECMAScript为单位,以毫秒为单位.闰秒被忽略.假设每天恰好有86,400,000毫秒.ECMAScript数值可以表示从-9,007,199,254,740,991到9,007,199,254,740,991的所有整数; 此范围足以测量从UTC时间1970年1月1日起向前或向后约285,616年内的任何瞬间的毫秒精度.
ECMAScript日期对象支持的实际时间范围略小:相对于UTC时间1970年1月1日午夜测量的时间恰好为-100,000,000天到100,000,000天.
这给UTC时间1970年1月1日的任何一方提供了8,640,000,000,000,000毫秒的范围.1970年1月1日开始的午夜的确切时刻由值+0表示.
小智 8
JS 中只有位运算符是 32 位的。没有任何版本可以改变这一点,如果您的操作系统是 64 位,也没有区别。因此,如果有人在时间戳上使用按位,则可能会发生这种情况。例如,这里我使用按位或,因为我想要将所有按位运算符转换为 int 的副作用,这样我就可以丢失日期的毫秒数。
new Date('2038-01-01T01:01:01.345') / 1000 | 0; // 2145913261.
new Date('2039-01-01T01:01:01.345') / 1000 | 0; // -2117518035. Wraps around...
Run Code Online (Sandbox Code Playgroud)
我可以使用其他任何东西,例如 Math.round 或 parseInt ,不会有问题,但如果我使用按位,它就会回绕。
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |