[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]!"); } } |