• UTC和GMT时间


    每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出。我自己就经常混淆于此,特地研究了一下,记录在此以备忘。

    整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。

    北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:

    Date: Fri, 08 Nov 2002 09:42:22 +0800

    说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午。

    以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:

    UTC + 时区差 = 本地时间

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

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

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

    0942 - 0800 = 0142

    即UTC是当天凌晨一点四十二分二十二秒。如果结果是负数就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间。例如,本地 (北京)时间是 0432 (凌晨四点三十二分),那么,UTC就是 0432 - 0800 = -0368,负号意味着是前一天, -0368 + 2400 = 2032,既前一天的晚上八点三十二分。

    纽约的时区是西五区,比UTC落后五个小时,记为 -0500:

    UTC + (-0500) = 纽约时间 (3)

    UTC = 纽约时间 + 0500 (4)

    把(2)式 - (4)式相比较,

    UTC = 北京时间 - 0800 = 纽约时间 + 0500 (5)

    即 北京时间 = 纽约时间 + 1300 (6)

    即北京时间领先纽约时间十三个小时,由(6)式,

    纽约时间 = 北京时间 - 1300 (7)

    在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为 -0400。

    UTC + (-0400) = 纽约夏令时,套用以上公式,

    北京时间 = 纽约夏令时 + 1200

    纽约夏令时 = 北京时间 - 1200

    在这些转换中,最重要的公式就是

    UTC + 时区差 = 本地时间

    时区差东为正,西为负。例如,东八区(北京)是 +0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区是西六区,-0600,美国山地时区是西七区,-0700,太平洋时 区是西八区,-0800,在夏天使用夏时制,成为-0700。德国时区是东一区,+0100,夏天变为+0200。

    多数电子邮件程序,例如Outlook Express,在显示时间时,计算机程序把时间先转换成为本地时间再显示,例如,邮件的Date域为:

    Date: Fri, 08 Nov 2002 09:42:22 +0800

    Outlook Express在显示时就显示为:

    Date: Thur, 07 Nov 2002 08:42:22 pm,把北京时间转换成为了纽约时间,而且把二十四小时格式的时间转换成为了十二小时的格式。当然,为了时间转换正确,发送方和接受方的计算机的时区都要 设置正确,在这里,发送方的时区要正确地设为北京时区东八区,而我的时区要设为西五区。

    为了方便起见,我在这里放上纽约,加洲以及北京实时显示的时钟,以省去计算的麻烦。
  • 相关阅读:
    Java 和因特网
    永久性
    在计算机编程中,一个基本的概念就是同时对多个任务加以控制
    违例控制:解决错误
    清除时的困境:由谁负责清除?
    集合库与方便使用集合
    单根结构
    集合与继承器
    对象的创建和存在时间
    抽象的基础类和接口
  • 原文地址:https://www.cnblogs.com/qiuyi21/p/1089456.html
Copyright © 2020-2023  润新知