- GMT:格林尼治平时(Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。(参考维基百科)
- UTC:协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“TempsUniversel Cordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时。(参考维基百科)
- DST:夏时制,又称日光节约时制、日光节约时間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。(参考维基百科)。简单说来,夏时制就是在当地时间的基础上,在夏季时间段内将时钟调快一小时,过后再调慢一小时。
- 通过函数GetTimeZoneInformation获取系统时区信息。
- 通过函数SetTimeZoneInformation设置系统时区。
- 两个函数都涉及TIME_ZONE_INFORMATION结构体:
1 typedef struct _TIME_ZONE_INFORMATION { 2 LONG Bias; //分钟为单位 3 WCHAR StandardName[32]; 4 SYSTEMTIME StandardDate; //标准时日期,即为调整为标准时的日期 5 LONG StandardBias; //通常为0 6 WCHAR DaylightName[32]; 7 SYSTEMTIME DaylightDate;//夏制时日期 ,即为调整为夏制时的日期 8 LONG DaylightBias; //分钟为单位 9 10 } TIME_ZONE_INFORMATION;
- 通过SetTimeZoneInformation修改本地时间:
- SetTimeZoneInformation只会影响系统时间(GetSystemTime),不会影响本地实时间(GetLocalTime)
- WinCE无SystemTimeToTzSpecificLocalTime函数,只能自己实现(两种方法):
- 通过system time和时区信息计算local time,比较麻烦
- 通过file time间接实现,代码:
1 BOOL SystemTimeToLocalTime(const SYSTEMTIME *pSt,SYSTEMTIME *pLt) 2 { 3 if (!pSt || !pLt) 4 { 5 return FALSE; 6 } 7 8 FILETIME ft,lft; 9 BOOL b = SystemTimeToFileTime(pSt,&ft); 10 if (!b) return b; 11 12 b = FileTimeToLocalFileTime(&ft,&lft);//文件时间--->本地文件时间,使用了时区信息 13 if (!b) return b; 14 15 return FileTimeToSystemTime(&lft,pLt); 16 }