时间同步(200分)

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

cslegend

Unregistered / Unconfirmed
GUEST, unregistred user!
有哪位大侠知道怎样是客户机的系统时间与服务器的系统时间同步。
我尝试使用GetSystemTime(),但他取的是格林威治时间,不同的操作系统
具有各自的时区,无法实现时间同步。
 
如果是局域网,可以用winexec调用net //server time /set /y 来同步时间。
 
procedure TMainData.SyncServerTime;
var
dtm:TDateTime;
dm:TSystemTime;
begin
Query.Close;
Query.Sql.Clear;
Query.Sql.Add('Select GetDate() as dtm');
Query.Open;
dtm:=Query.FieldByName('dtm').AsDateTime;
Query.Close;
//ShowMessage('Server Time='+DateTimeToStr(dtm));
DateTimeToSystemTime(dtm,dm);
if(not SetLocalTime(dm))then
begin
MessageDlg('同步服务器时间错误!.', mtError, [mbOK], 0);
Halt;
end;
end;
 
来晚了。
如果数据库是SQL SERVER 的话,可以用SELECT GETDATE()

如果用DELPHI应该是WinExec('net.exe time //KINGS /set /yes',SW_HIDE);
~~~~~
这是服务器名
 
如果是三层的话,可以在应用程序服务器中设置一个方法,取服务器的时间,然后在客户
端直接调用此方法,我就是这样做(在局域网中).
 
接受答案了.
 
后退
顶部