如果Date.now()大于Number.MAX_SAFE_INTEGER会怎样?

问题描述 投票:3回答:1

当然又花了20万年才发生。但是,会不会出现这样的情况呢?Javascript 约会系统错误后的值 Date.now() 的值,超过 Number.MAX_SAFE_INTEGER? 会出现什么后果?

也许这个问题看起来很奇怪,也很无用。但有谁能回答我的好奇心,以及其他可能有同样问题的人。

javascript date numbers unix-timestamp integer-overflow
1个回答
2
投票

你所描述的情况被ECMA-262排除了。可以由Date.now()返回的最大值是 Date.now 是±8.64e15,这完全可以在 安全支持的整数范围 由ECMAScript计算。

最大值可以代表纪元(1970年1月1日)两边的1e9天,所以范围约为±273,790年。我想在问题出现之前,会有时间来解决这个问题。

构造最大值的日期,返回的日期为+275760-09-13T00:00:00.000Z。在时间值上加一毫秒,返回的是无效日期。

// Max value returnable by Date.now
let maxDateNowValue = 8.64e15;

console.log(new Date(maxDateNowValue).toISOString()); // +275760-09-13T00:00:00.000Z

// Max value plus 1 millisecond
let plusOneMS = maxDateNowValue + 1;

console.log(new Date(plusOneMS).toString()); // Invalid Date
© www.soinside.com 2019 - 2024. All rights reserved.