为什么要存储UTC时间??

时间:UTC时间、GMT时间、本地时间、Unix时间戳

1.UTC时间 与 GMT时间

我们可以认为格林威治时间就是时间协调时间(GMT=UTC),格林威治时间和UTC时间均用秒数来计算的。

2.UTC时间 与 本地时

UTC + 时区差 = 本地时间

时区差东为正,西为负。在此,把东八区时区差记为 +0800,

UTC + (+0800) = 本地(北京)时间 (1)

那么,UTC = 本地时间(北京时间))- 0800 (2)

3.UTC 与 Unix时间戳

在计算机中看到的UTC时间都是从(1970年01月01日 0:00:00)开始计算秒数的。所看到的UTC时间那就是从1970年这个时间点起到具体时间共有多少秒。 这个秒数就是Unix时间戳。


So,时间戳(比如MySQL中的TIMESTAMP)是带时区信息的,但是转成date也是自动带时区的。

MySQL中的DATETIME是不带时区信息的,直接讲就是存进去什么,取出来就是什么。同样,Java中的Date、Time也是不带时区信息的。


那么,问题来了,如何get正确的时间??

假如当前时区是东八区,即本地时间是北京时间,我们存储的是UTC时间(),那么我们看到的这个存储的值就是——当前时间减去八个小时。

继续,为什么要存储UTC时间??

因为——国际化!!

想象一下,有一天,我们的程序运行在世界各地,如果程序中总是拿到当前时间就存储,当你访问伦敦的节点,或者加利福尼亚的节点,或者新加坡的节点,如何协调统一,岂不是乱了套了??

而,如果我们都用UTC时间存储,当世界各个节点的时间都在一个时区进行显示时,所有节点的UTC时间都只需要加减同一个数字就可以了!!

你可能感兴趣的:(为什么要存储UTC时间??)