|
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度(东八区)发来的,也就是从中国发来的。
|
|