如何获得时区值,并且这些个时区应该如何换算?(50分)

  • 主题发起人 主题发起人 cfjjj
  • 开始时间 开始时间
C

cfjjj

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi的帮助实在是太差,找了半天也找不到。哪位大侠能够告知,非常感谢!
 
参考一下吧,
procedure TfrmMain.SetStandardTimeZone;
var
ZI : TTimeZoneInformation;
S : WideString;
I : Integer;
begin
//设置当前时区为 中国标准时间
GetTimeZoneInformation(ZI);
if (ZI.Bias <> -480) or (ZI.StandardName <> WideString('中国标准时间')) then
begin
FillChar(ZI, SizeOf(ZI), 0);
ZI.Bias := -480; //GMT+08:00
ZI.StandardBias := 0;
ZI.DaylightBias := -60;

S := WideString('中国标准时间');
for I := 1 to Length(S) do
begin
ZI.StandardName[I-1] := S;
end;

S := WideString('中国夏时制时间');
for I := 1 to Length(S) do
begin
ZI.DaylightName[I-1] := S;
end;
SetTimeZoneInformation(ZI);
end;
end;
 
没有说都有什么时区啊,还有这些个时区之间相关多长时间?
 
TTimeZoneInformation的StandardName就是时区名, Bias就是时差
 
我现在不是想设置时区,而是想从其他机器上获取其日期和时间。这样我就必须知道他
的时区,然后再换算成我所需要的时区,从而知道现在的日期和时间。
现在我想知道:
一、有多少个时区,以及这些时区在windows中的名字;
二、各个时区之间差多少时间。
这样我才能进行换算。烦请告知!谢谢!
 
[:(], 如果是这样根本不关时区的事情, 你可以用NTP协议, 他使用的是国际标准时
 
楼上的兄弟,现在是人家不让用NTP啊,只能用TCP和UDP。所以我得得到服务器的时间,
然后发给客户端,客户端还得做比较,得到时间差。如果我不知道时区,那时间还不差多
了!
 
NTP就是采用的UDP协议。采用时区的办法不算太好,我上面的代码就是为了避免有人
人为改变注册表里的内容,出现无法预知的时区和时差。
 
接受答案了.
 
后退
顶部