系统时间的设定为什么总是不对?(20分)

  • 主题发起人 主题发起人 zqw0117
  • 开始时间 开始时间
Z

zqw0117

Unregistered / Unconfirmed
GUEST, unregistred user!
请看下面的代码:
procedure SetSysTime;
var
T:TDateTime;
S:TSystemTime;
begin
T:=Now;
DateTimeToSystemTime(T,S);
SetSystemTime(S);
end;
结果所设定的系统时间总是和T不对;
第二个例子:
procedure SetDateTime;
var
S:TSystemTime;
begin
GetSystemTime(S);
SetSystemTime(S);
end;
所设定的系统时间总是会向前加8个小时。

有谁知道问题在哪儿?
 
为什么?能详细说明吗?
 
LocalTime才是本地时间(北京时间),SystemTime是西方时间,大概是英国时间吧?^_^
 
这是时区的原因,北京时间和标准时间相差8小时。
 
谢谢,我去试试。
 
这中间的误差是8个小时,正好是中国的时区数.
应该用GetLocalTime
SetLocalTime
 
SystemTime是格林威治时间,和北京时间有8个小时的时差
 
SystemTime是格林威治时间,GetLocalTime/SetLocalTime是本地时间。
 
SystemTime是国际标准时间,一定要使用GetLocalTime,还是看看帮助文件吧
 
老兄,你的中学地理肯定从未及格过,这都想不出来!
 
大致和楼上说的一样,但是我发现一个问题,代码如下:
begin
GetLocalTime(S);//这时得到的日期和时间是:2002-05-10 12:00
Sleep(10000);//睡眠10秒,在这期间我更改了系统时间,为:2002-05-17 12:10
SetLocalTime(S);//所设定的时间是正确的:2002-05-10 12:00
end;
但是我如果重复调用该过程,有的时候日期会无法还原(例如还是上面的17日,而没
有在SetLocalTime语句后还原为10日),请问这是为什么?

by the way 中国在东8区,应该比格林威治时间早8小时,但是如果如上所说,得到的是
格林威治时间,那么时间应该比我机器上的时间少8小时,而不是多8小时呀。我的地理
不差,虽然我没有上学。
 
没有人知道上面问题的原因吗?
 
多人接受答案。
 
后退
顶部