UTC时间 和本地时间
世界的每个地区都有自己的本地时间,在Internet及无线电通信时,时间的统一非常重要!
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时(UTC,
Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。UTC与GMT含义完全相同。
北京时区是东八区,领先UTC 8个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:
Date:
Sun, 13 June 2010 09:45:28 +0800
说明信件发送地时间是2010年6月13号,星期日,上午9点45分28秒,该地区本地时领先UTC差
8个小时(+0800,就是东八区时间)。电子邮件信头的Date域使用24小时的时钟,而不使用AM和PM来标记上下午。
以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用以下公式:
UTC
+ 时区差=本地时间
时区差东为正,西为负。为此,把东八区时区差记为
+0800,
UTC
+ (+0800) = 本地(北京)时间 (1)
那么,UTC = 本地时间(北京时间))- 0800 (2)
在c中 获取时间
- SYSTEMTIME stLocal, stUTC, stUTC2;
- FILETIME ftLocal, ftUTC, ft;
- ULARGE_INTEGER uli;
- GetLocalTime(&stLocal);
- GetSystemTime(&stUTC);
- printf("Local System Time(YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stLocal.wYear, stLocal.wMonth,
- stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond);
- printf("UTC System Time (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stUTC.wYear, stUTC.wMonth,
- stUTC.wDay, stUTC.wHour, stUTC.wMinute, stUTC.wSecond);
- SystemTimeToFileTime(&stLocal, &ftLocal);
- uli.LowPart = ftLocal.dwLowDateTime;
- uli.HighPart = ftLocal.dwHighDateTime;
- printf("Local File Time: %llu/n", uli.QuadPart);
- LocalFileTimeToFileTime(&ftLocal, &ftUTC);
- uli.LowPart = ftUTC.dwLowDateTime;
- uli.HighPart = ftUTC.dwHighDateTime;
- printf("UTC File Time: %llu/n", uli.QuadPart);
- FileTimeToSystemTime(&ftUTC, &stUTC2);
- printf("UTC System Time2 (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stUTC2.wYear, stUTC2.wMonth,
- stUTC2.wDay, stUTC2.wHour, stUTC2.wMinute, stUTC2.wSecond);