为什么Date.now()每次调用时都返回不同的值?

时间:2014-09-21 18:59:09

标签: javascript utc

我在我的控制台中重复输入了5次:

Date.now(); 

每次我得到不同的价值:

  1. 1411325746046
  2. 1411325746707
  3. 1411325747247
  4. 1411325747731
  5. 1411325748204
  6. 每个值之间的差异比我预期的要多......

    关于为什么的任何想法?

3 个答案:

答案 0 :(得分:2)

奇怪的是,

Date.now()实际上并没有返回日期。相反,它返回自1970年1月1日00:00:00 UTC以来的毫秒数。

因此,每次在控制台中键入“Date.now()”时,我猜测可能在调用之间经过了半秒或更长时间。因此,您可以预期差异非常大,因为它会返回非常快的毫秒数。

您可以在MDN上阅读更多内容,请参阅this link

答案 1 :(得分:1)

根据您的跑步速度,时间可能会停滞不前,但并非总是如此。我们可以使用科学中经常使用的抽样技术来证明这一原理 - 在下面的代码中,我们将检查数百万个案例,看看时间是否仍然存在。

var i = 1000000;
var stat = {}
while (i-- > 0) { 
   var diff = Date.now() - Date.now(); 
   stat[diff] = stat[diff]+1 || 1; 
}
console.log("Sample Result:",stat)

"Sample Result:" { '0': 999889, '-1': 111 }

正如你所看到的,在大多数情况下(999898),时间实际上是静止的,而在111中它确实会移动。然而,不清楚时间是向前还是向后移动。

我希望这会有所帮助。

答案 2 :(得分:0)

Date.now()返回自1970年1月1日00:00:00 UTC(Unix Epoch)以来经过的毫秒数。