javascript - 在 JavaScript 中使用微秒精度的日期范围

标签 javascript floating-point

如果我将日期存储为 serial number例如,在 javascript 中,日期 "2014-01-01" 将存储为 41640., "2014-01-01 12:00:00 “ 将存储为 41640.5 等。

如果我们允许微秒精度(而不是毫秒精度,就像当前的 Javascript 日期对象那样),那么使用 javascript Number 可以存储的最大日期是多少?

最佳答案

一天有24*3600*10^6 μs,要准确存储86400000000=0x141DD76000这个值,需要37位。

尾数有52+1位。所以当天您还剩下 16 位来编码。这允许编码 ~2^16/365=179 年零 201 天。由于引用的是1900年左右,我们还必须考虑闰年:24(1900-1999)+20(2000-2079)=48个闰年。

由于引用日期恰好是 1899 年 12 月 30 日,因此在 2178 年 12 月 30 日 + (201-48) 天(相当于 2079 年 6 月 2 日)达到了编码限制。

此后,编码将继续,但精度会有所损失,并且不会精确到微秒。

关于javascript - 在 JavaScript 中使用微秒精度的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553152/

相关文章:

javascript - 设置隐藏元素的宽度和高度

java - 针对 SSE2 之前的处理器的 Java 运行时如何实现浮点基本操作?

ruby - 如何在 Ruby 中将 float 舍入到指定数量的有效数字?

java - 为什么 Java BigDecimal 返回 1E+1?

floating-point - 使用 RapidJSON 舍入 double 类型

javascript - 对象名称动态创建

javascript - 如何区分 localStorage 与单击时存储每个文件?

javascript - 为什么 max-height 在 Chrome 中有效,但在 IE 11 中无效?

string - 如何在Delphi中将浮点值显示为科学参数

javascript - backbone.js model.save 没有设置 id