由於本機系統時間不准確所以決定從Internet 時間服務器獲取標准時間來校正系統時間說干就干
程序設計步驟如下
新建一個工程
在窗體上放一個TEdit控件和一個TClientSocket(在Internet頁下)控件TEdit用來顯示取得的格林尼治時間轉化成北京時間後的時間TClientSocket用來從Internet 時間服務器獲取標准的格林尼治時間
程序代碼如下
procedure TFormFormCreate(Sender: TObject);
begin
ClientSocketHost :=tickusnonavymil; // 美國海軍天文台
ClientSocketPort :=;
ClientSocketOpen;
end;
procedure TFormClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
TempTime: TDateTime;
hhmmssms: word;
sTime : string;
begin
sTime := SocketReceiveText; // 取得格林尼治時間
sTime:=Copy(sTime); // 取得時間部分
DecodeTime(StrToTime(sTime)hhmmssms);
hh:=(hh+) mod ; // 轉化成北京時間
TempTime:=EncodeTime(hhmmssms);
EditText :=TimeToStr(TempTime);
end;
編譯運行稍微等幾秒鐘(和你的網絡速度有關筆者等了大概一秒鐘)TEdit控件就顯示出了由格林尼治時間轉化得到的北京時間
怎麼樣?很簡單吧趕快試一下吧!需要說明一點由於網絡延時的緣故這個程序得到的時間會和標准時間有幾秒的誤差但除非你用來控制火箭的發射否則這無妨大礙
筆者是從美國海軍天文台得到標准時間你還可以從別的時間服務器上獲取時間但由於每個時間服務器的時間格式不同所以在編寫程序時要注意作相應的處理
域名 組織
Clocksgicom SGI
Tickmitedu 麻省理工學院
Timenistgov NIST
From:http://tw.wingwit.com/Article/program/Delphi/201311/25087.html