菜鸟求救:怎样正确设置系统时间!

yao_xuejun 2004-01-14 03:46:31

SYSTEMTIME tTime;
GetSystemTime(&tTime);
//修改 tTime的成员,如:
tTime.wHour = 12;
//然后
SetSystemTime(&tTime);
能正确地设置系统时间。



SYSTEMTIME tTime;
//直接对 tTime变量赋值,如:
tTime.wHour = 12;
//然后
SetSystemTime(&tTime);
却不能正确设置系统时间,请问各位大侠,怎么样才能正确设置系统时间呢?是不是我哪弄错了?谢谢!
...全文
91 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yao_xuejun 2004-01-15
  • 打赏
  • 举报
回复
非常感谢各位高手的热情帮助!
MSDN里说了,设置系统时间时,忽略wDayOfWeek变量!
现在已经搞定了,再次谢谢各位!
alene_cn 2004-01-14
  • 打赏
  • 举报
回复
更正一下,刚才是因为我把系统时间提前了,导致文件没有编译,所以...(不小心的,原谅我啦)

第一点不匹配的话也没有影响。

不知楼主到底哪里错了???

源代码如下:

SYSTEMTIME st;

st.wYear = 2002;
st.wMonth = 1;
st.wDayOfWeek = 2;
st.wDay = 14;
st.wHour = 17-8;
st.wMinute = 20;
st.wSecond = 0;
st.wMilliseconds = 0;

BOOL bSet = SetSystemTime(&st);

wDayOfWeek虽然设成了2,但是打开“时间和日期”对话框,显示2002.1.14是星期一。
alene_cn 2004-01-14
  • 打赏
  • 举报
回复
“时期”错了,应该是“wDayOfWeek要与日期相匹配”。

用SetLocalTime可避免时区转换。
alene_cn 2004-01-14
  • 打赏
  • 举报
回复
如果不使用GetSystemTime初始化st的话,要注意两点:
1、wDayOfWeek要与时期相匹配,如果错误,设置不会成功,虽然函数返回1。(我试了几次,故意设错,导致以后设置正确的时间,它(系统时间)都不理我了,难道是BUG???)
2、The system time is expressed in Coordinated Universal Time (UTC)。因此我们采用东八区的时间,所以wHour=time-8;
kongyunzhongque 2004-01-14
  • 打赏
  • 举报
回复
里面可能有类型不匹配吧!
结构里的参数一般都是word类型的,建议先强制转换类型再赋值.
#include <windows.h>
#include <stdio.h>

void main()
{
//方法1
//调用控制台命令修改系统时间
// printf("要不要修改系统时间?Y/N\n");
char chRet;
while(1)
{
printf("要不要修改系统时间为2004-01-12? Y/N\n");
chRet=getchar();
getchar();
if(chRet =='Y' || chRet =='N' || chRet ==110|| chRet ==121)
break;
}
if(chRet =='Y' || chRet =='y')
system("date 2004-01-12");
//方法2
//调用API函数修改系统时间
/* SYSTEMTIME st;
::GetSystemTime(&st);
st.wYear=2004;
st.wMonth=1;
st.wDay =12;
::SetSystemTime(&st);
*/
}
runall 2004-01-14
  • 打赏
  • 举报
回复
yao_xuejun 2004-01-14
  • 打赏
  • 举报
回复
说明:可能误会我的意思了.
我是定义了一个SYSTEMTIME tTime;然后对tTime的每一个成员赋值,然后再SetSystemTime(&tTime);结果不对,请高手帮忙,谢谢!
UDX协议 2004-01-14
  • 打赏
  • 举报
回复
还要注意时区
feiniaoliang 2004-01-14
  • 打赏
  • 举报
回复
不要想当然,多看MSDN!!
yaolan1999 2004-01-14
  • 打赏
  • 举报
回复
tTime的其他参数都是错误值,是不符合SYSTEMTIME规定的,因此SetSystemTime(&tTime)调用失败,你可以看到SetSystemTime(&tTime)的返回值是0。因此不能正确设置系统时间。
huwei001982 2004-01-14
  • 打赏
  • 举报
回复
第一個方法是對的,回為SetSystemTime函數會對SYSTEMTIME的所有字段重新賦值,你第二種方法只設置了小時數,當然就不行了

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧