美文网首页
程序代码中的时区问题

程序代码中的时区问题

作者: 九九丸子 | 来源:发表于2019-03-07 18:16 被阅读10次

    GMT(格林尼治时间)与 UTC

    格林尼治时间(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。

    格林尼治时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。

    UTC 是 Coordinated Universal Time 的缩写,译为中文为“世界标准时间”,或“协调通用时间”/“协调世界时间”。UTC 根据原子钟计算时间,相比 GMT 更精确。

    UTC 时间与北京时间换算

    全球分为 24 个时区,东西各 12 区,相邻两个时区时间相差 1 小时,
    北京是东八区,北京时间比 UTC 时间早 8 小时。

    北京时间转化为 UTC 时间

    计算公式
    UTC + 时区差 = 本地时间
    UTC +0800 = 北京时间(时区差东为正,西为负,东八区=+0800)

    1. 北京时间(09:42:22)转化为 UTC 时间

    按照公式:0942 - 0800 = 0142
    所以UTC 时间是凌晨的 1:42:22。

    1. 北京时间 (04:32)转化为 UTC 时间

    0432 - 0800 = -0368(负号意味着是前一天)
    即 UTC 时间是: -0368 + 2400 = 2032,既前一天晚上 pm 8:32 。

    这里注意:如果结果是负数就意味着是 UTC 前一天,把这个负数加上2400就是UTC在前一天的时间。

    时间的表达方式

    比如时间 "updatedAt": "2019-01-25T07:10:06.893Z" 是什么意思?看了下面这个 时间格式的标准 就知道答案啦。

    • 在零时区,并恰好与协调世界时(UTC)相同,那么在时间最后加一个大写字母 Z。Z 是相对协调世界时间 0 偏移的代号。

    如下午2点30分5秒表示为14:30:05Z143005Z;只表示小时和分,为1430Z或14:30Z;只表示小时,则为14Z。

    • 其他时区用实际时间加时差表示。

    当时的UTC+8时间表示为22:30:05+08:00223005+0800,也可以简化成223005+08

    日期和时间的组合表示法

    合并表示时,要在时间前面加一大写字母T.

    如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08

    综上,揭晓答案,"updatedAt": "2019-01-25T07:10:06.893Z" 表示 UTC 时间的2019 年1约25日7点10分06.893秒

    Unix 时间戳

    时间戳(英语:Timestamp)是指字符串或编码信息用于辨识记录下来的时间日期。

    Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间 1970 年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统,也在许多其他操作系统中被广泛采用。

    相关文章

      网友评论

          本文标题:程序代码中的时区问题

          本文链接:https://www.haomeiwen.com/subject/soxhpqtx.html