clipboard.png

从具象到抽象的归纳总结要借助符号,从抽象到具象更需要借助符号

1. 那些听过的时间符号

  • 中国古代,将一天分为十二时辰,一个时间相当于现在的两个小时。比如子时,亥时,寅时等

  • 古装剧里,常有夜里打更,一夜分为五更,每更一个时辰

  • 包青天剧里,常有“秋后处决”、“午时三刻立斩”等

人类根据经验总结出来的春夏秋冬、子丑寅卯、一刻钟等,都是表达时间的符号。最直观的经验是参照太阳或月亮的位置,例如太阳在头顶为正午。每个地区都差不多是这样,看起来不会出问题。

随着交通的发展,经贸往来中发现,一个地区正值中午,而另一个地区确是黑夜。一方说现在是正午12点,另一方说现在是晚上8点。本地的时间在另一个地区无效。

2. 现代的时间系统

格林尼治标准时间「GMT」,又称世界时,加入了时区的因子。拿到一个 GMT 时间符号,可以知道它的精确值,不论身在哪个地区。而后,为了协调国际原子时(精度为纳秒)与世界时(精度为毫秒),出现了协调世界时「UTC」。

UTC 时间是一种算法,具体怎么表达某个时间因人而异。例如此时此刻可以表达为 东八区 2017 年 8 月 4日 晚上 11 点 30 分。如果你身在美国,拿到这个符号,你知道我说的是东八区的晚上 11点,而不是美国的 11 点。但每个人都用自己的语言表达,就会有理解成本,甚至可能出错。因此出现许多关于时间的标准,其中 RFC 1123 标准草案和 ISO 8601 文件常用的时间标准在计算机里用得比较多。

3. RFC 1123

编号为 RFC 1123 的草案中常用的 UTC 标准格式,如:
Sat Aug 05 2017 00:02:51 GMT+0800
GMT+0800 表示这是东八区的 Sat Aug 05 2017 00:02:51

在 Chrome 浏览器的控制台,执行 new Date 命令,输出的就是这种格式。

从事IT的人,有非常大一部分人对RFC不明就里。RFC 定义了涵盖几乎所有的互联网 IT 通信协议。

其实RFC在大一的课本里有提,可见,在学校好好学习知识总是没错的。

4. ISO 8601

ISO 8601是 ISO 的时间标准,定义了很多种时间表达方式,其中一种计算机常用的格式如:
2017-08-04T16:09:31.828Z
其中 T 是日期与时间的分隔符,Z 表示是 UTC 时间,2017-08-04 16:09:31.828 精确到毫秒。
2017-08-04T16:09:31.828+08:00
则表示是北京时间 2017-08-04 16:09:31.828

NodeJS 在控制台执行 new Date,输出的是这种格式。

ISO 是国际标准化组织,经常出现在广告词里,涉及领域更广泛。

注:本文只讲一下时间概念,以及计算机常见的两个时间标准的由来,及其格式。具体的 RFC 标准草案内容,我也没细读。如有不正确的地方请指正


啃先生
1.4k 声望1.2k 粉丝

前腾讯前端开发工程师,后来有一年时间经历参与创业,目前东南亚电商 Shopee,人在深圳。个人作品: