1. 程式人生 > >C語言時間函式(3)之Windows下設定時間SetLocalTime和SetSystemTime

C語言時間函式(3)之Windows下設定時間SetLocalTime和SetSystemTime

1.設定當前時區的時間

標頭檔案:#include <windows.h>

函式宣告:BOOL SetLocalTime(const SYSTEMTIME* lpSystemTime);

返回值:成功返回true,失敗返回flase

這裡介紹下SYSTEMTIME這個結構體

typedef struct _SYSTEMTIME {  // st 

    WORD wYear;

    WORD wMonth; //月份從1開始

    WORD wDayOfWeek; //SetLocalTime()不使用這個引數

    WORD wDay;

    WORD wHour;

    WORD wMinute;

    WORD wSecond;

    WORD wMilliseconds;

} SYSTEMTIME;

函式成功返回非零,失敗返回零。注意要求呼叫程序必需有SE_SYSTEMTIME_NAME許可權。

2.另外還有一個函式SetSystemTime(),它的引數與SetLocalTime一樣,只不過以UTC時區為基準的。

BOOL SetSystemTime(const SYSTEMTIME* lpSystemTime);

因為和上面的差不多,這裡就只舉一個例子:

例子:

#include<stdio.h>
#include<windows.h>

int main(void)
{
    int val=0;
    SYSTEMTIME system_time = {0};
	
	//先獲取本地時間 
    GetLocalTime(&system_time);

	//只修改年和月份 
    system_time.wYear = 1988;
    system_time.wMonth = 8;

    val = SetLocalTime(&system_time);

    if(0 == val)
    {
        printf("設定本地時間失敗!\n");
    }
    else
	{
		printf("設定本地時間成功!\n");
	} 

	 

    return 0;
}

修改之前的時間

程式執行的結果

修改之後的時間

這裡要說明幾點:

1.注意要求呼叫程序必需有SE_SYSTEMTIME_NAME許可權,這裡最簡單的辦法就是以管理員的身份執行你的使用的程式設計軟體或者生成的.exe程式以管理員的身份執行。也可以用程式碼從系統中獲取,有興趣的自行研究。

2.不同的程式設計軟體可能有差異,比如我在學習的過程中發現qt就只能修改一次系統時間等問題(可能是我環境的問題)。