Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Date.now()是否可以使用,它是否会达到JS可以';你不能处理吗?_Javascript_Node.js - Fatal编程技术网

Javascript Date.now()是否可以使用,它是否会达到JS可以';你不能处理吗?

Javascript Date.now()是否可以使用,它是否会达到JS可以';你不能处理吗?,javascript,node.js,Javascript,Node.js,Date.now()是否有可能开始以科学记数法返回数字 它可能是像Y2K这样的错误。使用它安全吗?它会穿过最大的隧道吗 JavaScript中可能出现的数字?这不是您所关心的: Number.MAX\u SAFE\u INTEGER至日期: 1996年10月12日星期三 相对值:287.396‬ 年头 另一方面 ECMAScript日期对象支持的实际时间范围稍微小一些:确切地说是–100000000天到100000000天,相对于UTC 1970年1月1日开始时的午夜测量 尽管不相关,但可能会

Date.now()是否有可能开始以科学记数法返回数字

它可能是像Y2K这样的错误。使用它安全吗?它会穿过最大的隧道吗
JavaScript中可能出现的数字?

这不是您所关心的:

Number.MAX\u SAFE\u INTEGER
日期

1996年10月12日星期三

相对值:287.396‬ 年头

另一方面

ECMAScript日期对象支持的实际时间范围稍微小一些:确切地说是–100000000天到100000000天,相对于UTC 1970年1月1日开始时的午夜测量


尽管不相关,但可能会引起您的反感,但正如前面提到的,它与JS无关

2038年的问题(也称为Y2038或Y2k38或Unix Y2K)涉及将许多数字系统中的时间表示为自1970年1月1日UTC 00:00:00以来经过的秒数,并将其存储为有符号32位整数。此类实施无法编码2038年1月19日03:14:07 UTC之后的时间。与Y2K问题类似,2038年的问题是由于表示时间的容量不足造成的

日期很有趣:)

can句柄是
2^53-1

将其转换为年:

console.log(Number.MAX_SAFE_INTEGER / 1000 / 60 / 60 / 24 / 365)
// outputs 285616.41472415626

所以答案是肯定的,使用它是安全的。

数字从来都不是“科学符号”;它可能会这样显示给您,但它在内部只是一个
数字。
让x=1000000000000000000//1e+21
x==x+10000//true
^如果Date.now()达到一个非常高的数字,这可能会导致问题。尽管它是一个内部数字,但无法获得
x
x+10000
之间的差异。当然,在某个时候,您将开始失去准确性。但是根据定义,如果
Date.now()
返回一个数字,则该数字永远不能超过Javascript中最高数字的阈值。由于您不是在处理可以手动溢出的整数,而是在非常抽象的运行时使用高级语言,这确实是Javascript引擎需要处理的问题,而不是您的用户代码。即使它超过了该阈值,您仍然能够用它来表示时间;它们可能不再精确到第二个了。你用什么值来表示“最大安全整数”
,你是如何把它转换成2255年的…?@deceze我用了
9007199254740991
和这个网站,但我发现我错了:)它假设微秒,因为这个数字太大了。它应该是毫秒,就像使用的最大安全整数是错误的一样。在我的计算中,结果是大约285000年,但你的计算太远了,看起来缺少毫秒转换。