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

时间:2019-06-12 00:18:39

标签: javascript floating-point

例如,如果我在javascript中将日期存储为serial number,则日期"2014-01-01"将存储为41640"2014-01-01 12:00:00"将存储为{{ 1}}等。

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

1 个答案:

答案 0 :(得分:2)

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

尾数中有52 + 1位。因此,您还有16位可用来编码日期。这允许编码〜2 ^ 16/365 = 179年零201天。由于参考值大约是1900年,因此我们还必须考虑the年:24(1900-1999)+20(2000-2079)= 48个leap年。

由于参考日期恰好是1899年12月30日,因此在20178年12月30日+(201-48)天达到了编码限制,该日期对应于2079年6月2日。

此后,编码将继续准确性下降,并且在微秒内将不精确。