在具有不同脚本/程序的同一台机器上的纪元时间相同

时间:2012-11-05 12:43:53

标签: javascript shell epoch

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您的意思是自Unix纪元(1970-01-01T00:00:00Z)以来的秒数,则受此定义的约束。您应该能够看到的唯一区别是:

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

也可能还有:

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

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

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

答案 1 :(得分:0)

根据ECMA-262 section 15.9.1.1

  

自1970年1月1日起,时间以ECMAScript为单位,以毫秒为单位   世界标准时间。在时间值中,忽略闰秒。假设那里   每天正好是86,400,000毫秒。

所以,是的,每个符合标准的JavaScript实现必须返回完全相同的值,自己处理任何物理时钟怪癖。除非错误设置系统时钟,否则您将获得相同的值。

请注意,在其他语言和系统中“epoch”和“seconds since”的定义可能会有所不同(至少大多数其他系统使用秒,而不是毫秒,最常见的是闰秒),所以你不能保证JS时间,即使除以1000,也会匹配来自其他平台或操作系统的时间戳。