5

我想使用shell来获取纪元时间,然后在html页面上使用javascript来获取另一个纪元时间,然后获取它们之间的差异,但我担心不同脚本之间的纪元时间可能不同步,所以这种差异是无用的

所以我想知道,如果我同时使用 shell 和 javascript 来获取 epoch tiem,结果是否相同?如果不是,差异有多大?

谢谢!

4

2 回答 2

1

如果您的意思是自 Unix 纪元 (1970-01-01T00:00:00Z) 以来的秒数,则它受此定义的约束。您应该能够看到的唯一差异是由以下原因引起的:

  • 返回它的系统调用的不同调用时间*);
  • 不同系统上的不同步时钟。

并且可能还有:

  • 不同处理器内核/物理处理器上的不同步时钟;
  • 返回当前时间的函数的实现相关处理(例如,JS 引擎实现可能会在短时间内缓存该值,因为不必执行实际的系统调用,尽管我对此表示怀疑)。

根据您需要的时间分辨率,其中一些不是问题。我的猜测是,如果您不需要比 1s 更精细的粒度,那么您应该会更好(在同一台机器上)。

*) 还要注意,在单核系统上,你不能真正从不同的系统调用中获得相同的时间(至少在 ns 分辨率下),除非内核缓存它,因为它们必须一个接一个地发生。

于 2012-11-05T13:04:32.293 回答
0

根据ECMA-262 第 15.9.1.1 节

自 1970 年 1 月 1 日 UTC 以来,时间在 ECMAScript 中以毫秒为单位进行测量。在时间值中,闰秒被忽略。假设每天正好有 86,400,000 毫秒。

所以,是的,每个遵循标准的 JavaScript 实现都必须返回完全相同的值,并自行处理任何物理时钟的怪癖。除非系统时钟设置错误,否则您将在任何地方拥有相同的值。

请注意,其他语言和系统中“纪元”和“秒后”的定义可能不同(至少大多数其他系统使用秒,而不是毫秒,并且最经常考虑闰秒),所以你不能保证 JS时间,即使除以 1000 也会匹配来自另一个平台或操作系统的时间戳。

于 2012-11-05T13:14:06.633 回答