如何确保任何计算机上的时间戳都是UTC时间

时间:2016-08-05 01:52:00

标签: erlang elixir

> os:system_time(seconds).
1470361698

这是正确的UTC时间戳,但我不确定它是否与系统相关。是吗?

如何确保在不同机器上运行的相同程序仍然可以在UTC时区运行?

1 个答案:

答案 0 :(得分:2)

os:system_time返回“OS系统时间”,其定义为大约“POSIX时间”,即自Epoch以来的秒数,定义为00:00:00 UTC,1970-01- 01,所以它应该总是返回“UTC时间戳”。 Erlang有关于Time Correction的优秀文档,请查看OS System TimePOSIX Time部分。

  

OS系统时间

     

POSIX时间的操作系统视图。要检索它,请致电os:system_time()。这可能是也可能不是POSIX时间的准确视图。通常可以向后和向前调整该时间而没有限制。也就是说,可以观察到时间扭曲。

     

POSIX时间

     

时代以来的时间。 Epoch定义为00:00:00 UTC,1970-01-01。 POSIX时间中的一天被定义为正好86400秒长。奇怪的是,Epoch被定义为UTC的时间,UTC还有一天的定义。引用开放组“POSIX时间因此不一定是UTC,尽管它的外观”。这样做的结果是,当插入UTC闰秒时,POSIX时间要么停止一秒钟,要么重复最后一秒。如果将删除UTC闰秒(尚未发生),POSIX时间将向前推进一秒。