有关机器时间、UTC时间、本地时间的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关机器时间、UTC时间、本地时间的总结相关的知识,希望对你有一定的参考价值。

参考技术A

\\1. 时间的表达方式有两种,一种是 human time,比如我们所说的年月日等,一种是 machine time,比如我们用 System.currentTimeMillis() 方法获得的毫秒数。

\\2. machine time 表示的是从epoch时间(1970年1月1日0时0分0秒)开始到现在已经过了多少时间,注意这里的时间都是指UTC时间。

\\3. 对于任意给定的 machine time,都可以通过加上epoch时间,算出该 machine time 对应的UTC时间,即 machine time 和 UTC 时间是一一对应的。

\\4. 当 machine time 为0时,其对应的UTC时间就是epoch时间。

\\5. machine time 可以理解为是UTC时间的另一种表现形式,其本质上就是UTC时间。

\\6. human time 是一种用人类便于理解方式表示 machine time 的方法,当我们看到一个用年月日等表示的 human time 时,它其实是对 machine time 做的一种转换。

\\7. 由于机器只能获取 machine time,所以所有的human time其实都是要先获取 machine time,再在其基础上做各种计算得来的。

\\8. UTC 时间是 human time 时间的一种,所以要想获取当前时刻的 UTC 时间,也要先获取 machine time,再按照上述规则计算出来。

\\9. UTC 时间不受时区影响,对于给定的一个UTC时间,在全球任意地方都表示同一时刻。

\\10. UTC 时间也可以粗略的理解为时区为0的时间。

\\11. 由于machine time 和 UTC 时间的关系,machine time 也是不受时区影响的,即用 System.currentTimeMillis() 方法获取的一个 machine time,在全球的任意地方也都表示同一时刻。

\\12. human time还有一种形式就是本地时间,或者说是本地时区时间。

\\13. 本地时间和UTC时间的关系是,本地时间是在UTC时间的基础上,通过加减一定的时间得来的,加减的具体数值受所在时区影响。

\\14. 比如,中国所处时区为东8区,想要算中国境内的本地时间的流程是,先获取 machine time,根据 machine time 算出 UTC 时间,然后再在UTC时间基础上加8个小时,算出中国境内的本地时间。

\\15. 由于UTC时间并不适合表示全球所有地区的本地时间(比如,UTC时间的14点在某些地区可能是晚上),所以才有了本地时区时间这个概念。不同时区在同一时刻使用不同的本地时间,本质上是为了方便人们的日常生活。

\\16. 如果只有一个本地时间,而没有该时间对应的时区的话,是无法表示时间线上的某一时刻的,所以,在全球不同地区进行时间交换时,要么用UTC时间,要么用带有时区的本地时间。

\\17. 不管是UTC时间还是本地时区时间,它们都是 human time,即都可以通过一定规则与machine time 相互转换,区别就是不同的 human time 形式使用不同的转换规则。

\\18. 暂时想到这么多,如果后续还有其他总结,我们再做补充。

以上就是 良许教程网 为各位朋友分享的有关机器时间、UTC时间、本地时间的总结。

最后,最近很多小伙伴找我要 Linux学习路线图 ,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

推荐阅读:

UTCGTC时间和本地时间

1、问题

对于装有Windows和Linux系统的机器,进入Windows显示的时间和Linux不一致,Linux中的时间比Windows提前8个小时。

2、解决方法

修改/etc/default/rcS,设置不使用UTC时间,设置如下:
UTC=no

3、解释

这个是一个关于时间的问题,我们就先来了解一下关于时间的概念

UTC(Universal Time Coordinated):协调世界时
GMT(Greenwich Mean Time):格林威治时间
本地时间(local time):全球二十四个时区,以GMT或UTC为基准进行调整。例如,北京为东八区,则北京时间为GMT+8或UTC+8

UTC和GMT基本上一致,但UTC经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以秒为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此UTC比GMT来得更加精准更为精确。

Windows与Mac/Linux 缺省看待系统硬件时间的方式是不一样的:
1) Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。
2) Linux/Unix/Mac默认把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。

因此,若要解决上述Windows和Linux显示时间不一致的问题,只要设置Linux/Unix/Mac不要将硬件时间当做UTC时间,而是作为本地时间即可。

以上是关于有关机器时间、UTC时间、本地时间的总结的主要内容,如果未能解决你的问题,请参考以下文章

将 UTC 日期时间全局转换为用户指定的本地日期时间

UTCGTC时间和本地时间

SQL Server 的本地时间和UTC时间

关于UTC时间和本地时间

如何将UTC时间转化为本地时间

VBS实现UTC时间和本地时间互转