Skip to content

计算机中的时间

unix时间戳

unix时间戳是相对于UTC时间"1970年1月1日 00:00:00"所经过的秒数。由于是相对于UTC时间,各时区的计算机在同一时刻获取到的时间戳都是相同的。

unix时间戳不存在时区问题,因此在传递时间参数的时候,传时间戳明显比传格式化的时间字符串更方便,更明确

2038年问题

相当一部分unix操作系统使用32位有符号整型保存时间戳,因此时间戳的值最大也只有2147483647,换算成UTC时间为"2038-01-19 03:14:07",一旦超过这个时间,这些系统的时间戳就会变成一个无效值,可能会导致程序出错,这就是2038年问题。

这有点类似于千年虫问题,2000年以前,很多计算机程序由于程序设计有问题,在时间超过2000年1月1日零点之后,程序会因为无法正确处理时间导致处理出错或程序崩溃(例如有些程序只用年份的后两位表示年份,导致2000年会被误认为是1900年)