[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