技术科普

什么是纪元(Epoch)?计算机时间的起点

说到计算机中的时间,常会提到一个词——纪元(Epoch)。它是计算机时间的“起点”。

什么是纪元

纪元是指计时所选取的起始时刻。不同系统对“零点”的选取不同:

  • Unix / Linux:1970年1月1日 00:00:00 UTC
  • 微软 Windows(部分):1601年1月1日
  • 微软 .NET:0001年1月1日
  • Mac OS 经典系统:1904年1月1日
  • GPS时间:1980年1月6日

为什么Unix选择1970年

Unix系统诞生于20世纪70年代初,设计者选用1970年1月1日作为起点,取一个方便且较近的时间。这个选择后来随Unix和C语言的普及,成为影响最广的纪元。

纪元的实际意义

纪元决定了时间戳的“零点”。例如说“时间戳为0”,在Unix中就是1970年,在.NET中则是公元1年。因此,跨系统处理时间时,必须明确使用的是哪个纪元,否则会出现巨大误差。

纪元与人类历法

“纪元”并不只存在于计算机。人类的历法也有各自的纪元,如公历以公元元年为起点,佛历以佛陀涅槃之年为起点,伊斯兰历以希吉来(迁徙)之年为起点。不同的纪元,反映了不同的文化与历史。

结语

纪元是时间计量的原点。理解不同系统的纪元差异,是正确处理计算机时间的重要前提。