C0EEBDA1

在梦中,我是有超能力的。。。

« 【MFC应用】使用CRegKey类操作注册表,完成文件关联【MFC应用】获取字符的点阵字模数据并显示 »

【MFC应用】UTC(格林尼治时间)转换为本地时间

UTC(格林尼治时间),也叫做世界时间,是全世界时间的参照物。

在编程过程中,经常遇到以UTC时间来表示的时间,比如文件修改时间,或者某些日志里的时间等。

一般在MFC编程过程中,得到时间之后,经常放入CTime类中。那假设这个时间其实是个UTC时间,该如何转换为本地的实际时间呢?下面给出一种方法,不一定是最好的,仅供各位参考:

   1: // 假设有一个CTime表示的UTC时间
   2: CTime time(nYear, nMonth, nDay, nHour, nMin, nSec, nDST);
   3: SYSTEMTIME systime;
   4: FILETIME filetime, localfiletime;
   5: // 首先需要将CTime转换为SYSTEMTIME来表示
   6: time.GetAsSystemTime(systime);
   7: // 然后使用SystemTimeToFileTime转换为FILETIME
   8: SystemTimeToFileTime(&systime, &filetime);
   9: // 接着可以使用FileTimeToLocalFileTime将UTC转换为本地时间
  10: FileTimeToLocalFileTime(&filetime, &localfiletime);
  11: // 最后转换回SYSTEMTIME
  12: FileTimeToSystemTime(&localfiletime, &systime);
  13: // 并紧接着重新赋值给CTime
  14: time = systime;
  15: // OK, 到这里CTime里就已经是本地时间了

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense  theme by BokeZhuti

Copyright 2008-2009 C0EEBDA1. Some Rights Reserved. 备案号:京ICP备09020681号