深入理解windows系统内的GMT和时区

时间:2022-06-01 12:56:25

今天在做一些dc测试的时候,遇到时间问题,因为有一台xp英文版的计算机(时区默认为西八区),登域的时候出现故障,无法登入。登陆本机后,查看时区的时产生了有关时区和GMT的一些困惑,查资料,看地图,最后把问题弄明白了。在这个过程中,对gmt和时区等有了一些新的理解,写出来和大家分享。      这里不涉及dc相关知识,只讨论GMT和时区。

      GMT,全称Greenwich Mean Time,即格林威治标准时,为什么有这样一个时间呢?原因这里不多说,网上很多,其实它的出现就是为规范全球的时间,各国都已一个固定时间为参照点来计算当地时间。为此1884年的美国华盛顿特区召开了国际经线大会,确定格林威治就是东西经零度的地方。人们将地球人为的分为24等份,每一等份为一个时区,每时区横跨经度15度,时间正好为1小时,以格林威治所在地的时区为中时区,我们现在假设GMT时间为1月10日凌晨(即0点整),往西一个时区,则减去一小时,则当地时间是1月9日夜晚23点整,往东一个时区,则加上一小时,则当地时间是1月10日凌晨1点,依次类推,中国在东经120度上,可以这样计算,(东经120°-东经0°)所得度数再除以15,即得8,所以中国在东八区上,那么,此时中国就是1月10日早上8点整。

        有一个计算公式,本地时间=UTC + 时区差。 可能有不少朋友会问,utc是什么? 和GMT有什么区别呢?UTC(Universal Time Coordinated)是通用协调时,这两者几乎是一样的,都是指的格林尼治标准时间,只是UTC的称呼更为正式一点。 对于真个公式,我们来做几个例子就明白了。

       首先需要说明,时区差是有正负之分的,以中时区为准,往西为负,往东为正,什么意思呢?举一个例子,中国的时区是东八区,即+08:00,完整写法是GMT+08:00,美国东部时区是西五区,即-05:00,完整写法是GMT-05:00,因为这个时间差需要参与运算,所以不能省去前面的符号。
       
      比如,现在是北京时间2009年2月5日13点40分,我想知道现在纽约(位于西五区)的时间,怎么算?我们来看公式: 本地时间=UTC + 时区差,根据公司首先需要得到当前的UTC时间是多少。UTC在中时区,即0,13:40=UTC+08:00,得出UTC为2009年2月5日05点40分,再利用此公式,由  纽约时间=05;40+(-05:00), 得出 纽约时间=0;40 因为得数为正,这就表示日期没变,还是2月5日,,这样我们就可以计算出,此时美国的时间为 2009年2月5日凌晨0点40。

       这些是上午由一个域时间差的问题引申出来有关GMT和时区的理解,希望能帮到大家