唯美 / 独立 / 有趣
专注于"书影音"的垂直媒体

时间、Unix时间戳、千年虫与人生

原创 tony 私人物语

起这个题目,源起某论坛看到的帖子:过了今天(公元2020年9月13日)下午8点(北京时间 20:00 ),(Unix)时间戳就要从 16xx 开始了。 作为日常和 Unix 时间戳打交道的 IT 从业者,对这条小知识颇有些兴趣,又有些惆怅:时间以这种方式,宣告它一去不复返。
初中地理里学到,本初子午线,也就是0°经线,穿过英国格林尼治天文台,向东为东经,向西为西经。地球按经度,划分了24个时区,格林威治时间(GMT)作为基准时区,向东时钟时间随时区增加而前进,向西时钟时间随时区增加而后退。中国地域跨越5个时区(东5区至东9区),民国时曾采用5个时区计时,新中国成立后全国采用北京所在时区(东8区 GMT + 8)作为标准时间,也就是现在说的北京时间。
Unix 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在经过的总秒数。作为 IT 业界基础设置,Unix 时间戳被广泛用于计算机各种软硬件系统里。可以这么类比,Unix 时间戳就是计算机系统的格里高利历法(公元纪年),而格林威治时间1970年1月1日午夜,就是这套历法的起点。
背景介绍完了,让我们回到标题里的“千年虫”问题。2000年之前,一些计算机程序用年份最后两个数字来表示年份,比如 1998年 被表示成“98”, 1999年 被表示成“99”,这样做在新的千禧年来临之前,固然不会出问题,还能节省存储空间。但当 2000年 到来,那些“节省”的程序就出问题了,2000年 被表示成“00”,导致处理结果可能出错,比如把 “00” 理解成 1900年。如今微软的 Windows 系统都到 Win10了,当初很多人问有 Win7、Win8,却为何跳过了 Win9 就直奔 Win10 了呢?那是因为微软在90年代出过 Win95 和 Win98,如果出个 Win9,很可能会带来一些混乱。比如一些老的 Windows 软件判断系统版本,简单粗暴看数字,那 Win9 很可能会被识别成 Win95/Win98。千年虫问题的产生源于早期计算机软硬件发展水平,作为历史遗留问题,也给以后埋下了一定隐患。比如台湾地区的民国“百年虫”问题,日本新纪年和昭和年号延后的“新千年虫”问题。
回到 Unix 时间戳,由于传统 Unix 系统采用32位有符号整型数字表示日期,32位有符号整型能表示的最大数字是2的31次方减去1,也就是2147483647,转化成GMT时间就是“2038-01-19 03:14:07”。假如有祖传软硬件到了2038年那个时间点还在用32位有符号整型数字表示日期,那必将引发时间错乱乃至系统崩溃问题。好在,如今计算机软硬件发展已经到了新的高度,还有十几年的时间留给人们改造以规避可能存在的问题。如今大部分64位操作系统都改用64位表示 Unix 时间戳了,但仍有不少32位系统在运行。新的64位运算器,将把时间记录延后到2900亿年之后,那时候别说人类,就算宇宙还存不存在,都不得而知。

让我们直观地看一下时间流逝:

格林威治时间 北京时间 Unix 时间戳
2023-11-14 22:13:20 2023-11-15 06:13:20 1,700,000,000
2020-09-13 12:26:40 2020-09-13 20:26:40 1,600,000,000
2017-07-14 02:40:00 2017-07-14 10:40:00 1,500,000,000
2014-05-13 16:53:20 2014-05-14 00:53:20 1,400,000,000
2011-03-13 07:06:40 2011-03-13 15:06:40 1,300,000,000
2008-01-10 21:20:00 2008-01-11 05:20:00 1,200,000,000

3年,38个月,1157天,27777小时,1亿秒。那么少,又那么多,却那么飞快。三年复三年,三年何其多?

最后,借用《深夜食堂》流浪诗人的俳句:世间有如流离迷失的戾川,别轻视人生啊。

赞(0)
转载请以链接形式标明本文地址:梦千寻 » 时间、Unix时间戳、千年虫与人生
分享到: 更多 (0)

梦千寻 - 梦里寻它千百度

电影台词名人名言