其他分享
首页 > 其他分享> > [VC]设置本机系统时间

[VC]设置本机系统时间

作者:互联网

[VC]设置本机系统时间 2010-10-20 15:53 阅读(1) 上一篇 | 下一篇:教你做表格(史上...  
 

[VC]设置本机系统时间

 

由于OS是Win7,可能是由于权限的问题,调用SetLocalTime函数不成功,

于是乎我又调用了SetSystemTime函数,结果可以更新系统时间,但是却比我传入的时间晚了8个小时

你知道为什么呢?

 

查查资料吧,呵呵~~~

 

~~哈哈,原来,原因如下:

GetSystemTime 以及SetSystemTime函数返回的是 协调通用时间(UTC,也称为格林威治时间)。
  若要获得本地时间,必须加上或减去您所在的时区与 UTC 之间相差的小时数。
  例如,UTC 中的 24:00(午夜)是纽约的 19:00 -- 负 5 小时的偏移量 (UTC–5)。
  若要确定您所在时区的 UTC 偏移量,请参见“日期和时间属性”的“时区”选项卡。

 

因此,我采用如下的代码来处理:(dtInputTime是传入的时间)

 

  COleDateTimeSpan dtsOffset(0, 8, 0, 0); // UTC+8东八区
  COleDateTime dtUTC = dtInputTime - dtsOffset;
  COleDateTime dtNow = dtUTC;
  {
   SYSTEMTIME SystemTime;   
   SystemTime.wYear      = dtNow.GetYear();
   SystemTime.wMonth     = dtNow.GetMonth();
   SystemTime.wDayOfWeek = dtNow.GetDayOfWeek();
   SystemTime.wDay       = dtNow.GetDay();
   SystemTime.wHour      = dtNow.GetHour();
   SystemTime.wMinute    = dtNow.GetMinute();
   SystemTime.wSecond    = dtNow.GetSecond();
   
   // 修改本机系统时间
   if (SetSystemTime(&SystemTime))
   {
    CString strLogMessage;
    strLogMessage.Format(L"更新系统时间成功!");
   }
   else
   {
    CString strLogMessage;
    strLogMessage.Format(L"更新系统时间失败[SetSystemTime返回0]!");
   }
  }

标签:UTC,SystemTime,机系统,dtNow,VC,时间,设置,SetSystemTime
来源: https://www.cnblogs.com/ioriwellings/p/15493707.html