关于时间的一些理解

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中 获取时间 

 

  1.     SYSTEMTIME      stLocal, stUTC, stUTC2;  
  2.     FILETIME        ftLocal, ftUTC, ft;  
  3.     ULARGE_INTEGER  uli;  
  4.   
  5.     GetLocalTime(&stLocal);  
  6.     GetSystemTime(&stUTC);  
  7.     printf("Local System Time(YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stLocal.wYear, stLocal.wMonth,  
  8.         stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond);  
  9.     printf("UTC System Time  (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stUTC.wYear, stUTC.wMonth,  
  10.         stUTC.wDay, stUTC.wHour, stUTC.wMinute, stUTC.wSecond);  
  11.   
  12.     SystemTimeToFileTime(&stLocal, &ftLocal);  
  13.     uli.LowPart = ftLocal.dwLowDateTime;  
  14.     uli.HighPart = ftLocal.dwHighDateTime;  
  15.     printf("Local File Time: %llu/n", uli.QuadPart);  
  16.   
  17.     LocalFileTimeToFileTime(&ftLocal, &ftUTC);  
  18.     uli.LowPart = ftUTC.dwLowDateTime;  
  19.     uli.HighPart = ftUTC.dwHighDateTime;  
  20.     printf("UTC File Time: %llu/n", uli.QuadPart);  
  21.   
  22.     FileTimeToSystemTime(&ftUTC, &stUTC2);  
  23.     printf("UTC System Time2 (YYYY-MM-DD HH:MM:SS): %d-%d-%d %d:%d:%d/n", stUTC2.wYear, stUTC2.wMonth,  
  24.         stUTC2.wDay, stUTC2.wHour, stUTC2.wMinute, stUTC2.wSecond);  


posted @ 2014-07-29 11:18  饺子吃遍天  阅读(184)  评论(0)    收藏  举报