系统时间设置问题(等待中。。。)

holysword 2003-07-11 09:54:23
经过计算的时间经过tdatetTime.DecodeTime(&lpSystemTime.wHour ,
&lpSystemTime.wMinute ,
&lpSystemTime.wSecond ,
&lpSystemTime.wMilliseconds)转换成SYSTEMTIME lpSystemTime 中时间部分。但是再用SetSystemTime(&lpSystemTime)给系统设置时间,结果总是和预期系统时间差8小时,我怀疑我用SetSystemTime(&lpSystemTime)改时间只改变了GMT但是PST和GMT差8小时,而我们使用的是PST,请问怎么解决???
...全文
36 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
holysword 2003-07-11
  • 打赏
  • 举报
回复
好了多谢!给分你。
xuv2002 2003-07-11
  • 打赏
  • 举报
回复
或是这样
SYSTEMTIME stime;
GetSystemTime(&stime);//得到系统当前时间相对应格林威治时间
TIME_ZONE_INFORMATION zinfo;
GetTimeZoneInformation(&zinfo);//得到时区信息
SystemTimeToTzSpecificLocalTime(&zinfo,&stime,&stime);//将格林威治时间转换为对应的当前时区的时间
SetLocalTime(&stime);//设置时间
上边代码也是一样,执行后系统时间没有改变
希望能对你有所启发
GetSystemTime SetSystemTime 都是使用的格林威治时间
GetLocalTime SetLocalTime 才是本时区时间
其对应关系还是要搞清楚最好
xuv2002 2003-07-11
  • 打赏
  • 举报
回复
怎么会呢
TDateTime dt = Now();
SYSTEMTIME stime;
dt.DecodeDate(&stime.wYear,&stime.wMonth,&stime.wDay);
dt.DecodeTime(&stime.wHour,&stime.wMinute,&stime.wSecond,&stime.wMilliseconds);
SetLocalTime(&stime);

这段代码应该是将得到的时间设为系统时间,时间应该是没变
不信,你自己试试
xuv2002 2003-07-11
  • 打赏
  • 举报
回复
怎么会呢
TDateTime dt = Now();
SYSTEMTIME stime;
dt.DecodeDate(&stime.wYear,&stime.wMonth,&stime.wDay);
dt.DecodeTime(&stime.wHour,&stime.wMinute,&stime.wSecond,&stime.wMilliseconds);
SetLocalTime(&stime);

这段代码应该是将得到的时间设为系统时间,时间应该是没变
不信,你自己试试
holysword 2003-07-11
  • 打赏
  • 举报
回复
还是不对。。。
xuv2002 2003-07-11
  • 打赏
  • 举报
回复
将SetSystemTime换成SetLocalTime即可
函数原型
BOOL SetLocalTime(

CONST SYSTEMTIME *lpSystemTime // address of local time to set
);
FlySky01 2003-07-11
  • 打赏
  • 举报
回复
哦 我要知道了
Wingsun 2003-07-11
  • 打赏
  • 举报
回复
看看以前的文章,有说这个的,在专题中也有。
《程序员》杂志上有发表过。
路人丁 2003-07-11
  • 打赏
  • 举报
回复
哈哈!因为我们在东八区120/15=8, 120度的当地时间是北京时间,每跨15度时间相差1小时,360度正好24小时!到控制面板中把时区改一下你会发现差的不是8了……

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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