电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1568|回复: 0

UTC时间和本地时间(LocalTime)的区别

[复制链接]
admin 发表于 2013-5-29 08:12:50 | 显示全部楼层 |阅读模式
UTC时间和本地时间(LocalTime)的区别
世界协调时间(Universal Time Coordinated,UTC),GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,(LocalTime)地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可.
UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。
   GMT(Greenwich Mean Time)是格林尼治平时:由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。
   由于两个系统设定时间时以主板CMOS内的时间为依据,但却有不同的时间计算标准。所以导致了系统时间的纠纷问题。 具体可以查看MSDN里面的解释,请看下面的程序:
[cpp] view plaincopyprint?

#include <windows.h>  #include <stdio.h>    void main()  {   SYSTEMTIME system_time;   GetSystemTime(&system_time);   //GetLocalTime(&system_time);   printf("year:%d,month:%d,date:%d,hour:%d,minute:%d,second:%d,date of week:%d/n",    system_time.wYear,system_time.wMonth,system_time.wDay,system_time.wHour,    system_time.wMinute,system_time.wSecond,system_time.wDayOfWeek);  }  

#include <windows.h>#include <stdio.h>void main(){ SYSTEMTIME system_time; GetSystemTime(&system_time); //GetLocalTime(&system_time); printf("year:%d,month:%d,date:%d,hour:%d,minute:%d,second:%d,date of week:%d/n",  system_time.wYear,system_time.wMonth,system_time.wDay,system_time.wHour,  system_time.wMinute,system_time.wSecond,system_time.wDayOfWeek);}
编译输出是:
   year:2011,month:3,date:28,hour:7,minute:48,second:53,date of week:1  //注意此时是15时,下午的3点
如果把GetSystemTime(&system_time)注释掉,而改用GetLocalTime(&system_time)
即程序变为如下:
[c-sharp] view plaincopyprint?

#include <windows.h>  #include <stdio.h>    void main()  {   SYSTEMTIME system_time;   //GetSystemTime(&system_time);   GetLocalTime(&system_time);   printf("year:%d,month:%d,date:%d,hour:%d,minute:%d,second:%d,date of week:%d/n",    system_time.wYear,system_time.wMonth,system_time.wDay,system_time.wHour,    system_time.wMinute,system_time.wSecond,system_time.wDayOfWeek);  }  

#include <windows.h>#include <stdio.h>void main(){ SYSTEMTIME system_time; //GetSystemTime(&system_time); GetLocalTime(&system_time); printf("year:%d,month:%d,date:%d,hour:%d,minute:%d,second:%d,date of week:%d/n",  system_time.wYear,system_time.wMonth,system_time.wDay,system_time.wHour,  system_time.wMinute,system_time.wSecond,system_time.wDayOfWeek);}
   那么输出变为:year:2011,month:3,date:28,hour:15,minute:50,second:42,date of week:1
有时在邮件中会看见UTC(7:00)+8:00之类的,就是说这封邮件是从东经120度(东八区)发来的,也就是从中国发来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-27 11:47 , Processed in 0.111715 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表