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就只能修改一次系统时间等问题(可能是我环境的问题)。