计算机世界中常见的时间有UTC时间和Unix时间戳。
UTC时间
即格林威治标准时间,也叫做GMT时间。
由UTC时间还可以引申出本地时间,所谓本地时间流逝格林威治标准时间加上时区差,东为正,西为负。如,北京时间为UTC+0800。
UTC时间是用秒数来计算的,也就是我们在现实世界所使用的时间。
Unix时间戳
Unix时间戳是从1970年1月1日到具体时间所经过的秒数,换句话说,计算机认为,1970年1月1日为时间原点。
为什么是1970年1月1日?在最初的计算机系统中,时间是以一个32位整型的形式存储的,32位整型最大能表示2147483647秒,这是什么概念?2147483647/365/24/60/60=68.1年,也就是说,受到当时设计的时间存储方式的限制,计算机系统中能认识到时间上限为68.1年。
综合Unix操作系统最早发布的时间以及当时的现实因素,便以1970年1月1日为计算机时间原点,而2038年1月19日03时14分07秒就是计算机时间的终点。在这时间之后,系统时间就会回归到1901年12月13日20时45分52秒,很多软件就会发生时间异常。
所以,在计算机中看到的时间,都是从时间原点到具体时间所经过的秒数,这个秒数就是Unix时间戳。
当然,随着计算机技术的发展,时间回归这个在计算机的洪荒时代所遗留的问题已经得到解决,这就是计算机的64位化。在64位下,整型所能表示的时间上限是29277026596年,这已经是两千多亿年后,地球到目前为止也就只有45亿年的寿命,到那时恐怕连这个宇宙都已经不存在了。