程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 從Internet時間服務器獲取標准格林尼治時間

從Internet時間服務器獲取標准格林尼治時間

編輯:Delphi

由於本機系統時間不准確,所以決定從Internet 時間服務器獲取標准時間來校正  系統時間,說干就干。

程序設計步驟如下:

1、  新建一個工程;

2、  在窗體上放一個TEdit控件和一個TClIEntSocket(在Internet頁下)控件。TEdit用來顯示取得的格林尼治時間轉化成北京時間後的時間,TClIEntSocket用來從Internet 時間服務器獲取標准的格林尼治時間;

3、  程序代碼如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

  ClIEntSocket1.Host :='tick.usno.navy.mil';  // 美國海軍天文台;

  ClIEntSocket1.Port :=13;

  ClIEntSocket1.Open;

end;

 <?XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:Office" />

procedure TForm1.ClIEntSocket1Read(Sender: TObject;

  Socket: TCustomWinSocket);

var

  TempTime: TDateTime;

  hh,mm,ss,ms: Word;

  sTime : string;

begin

  sTime := Socket.ReceiveText;    // 取得格林尼治時間;

  sTime:=Copy(sTime,12,8);      // 取得時間部分;

  DecodeTime(StrToTime(sTime),hh,mm,ss,ms); 

  hh:=(hh+8) mod 24;           // 轉化成北京時間;

  TempTime:=EncodeTime(hh,mm,ss,ms);

  Edit1.Text :=TimeToStr(TempTime);

end;

  

4、  編譯運行,稍微等幾秒鐘(和你的網絡速度有關,筆者等了大概一秒鐘),TEdit控件就顯示出了由格林尼治時間轉化得到的北京時間。

 

     怎麼樣?很簡單吧。趕快試一下吧!需要說明一點:由於網絡延時的緣故,這

 個程序得到的時間會和標准時間有幾秒的誤差,但除非你用來控制火箭的發射,否

  則,這無妨大礙。

筆者是從美國海軍天文台得到標准時間,你還可以從別的時間服務器上獲間,但由於每個時間服務器的時間格式不同,所以在編寫程序時要注意作相應的處理。

   域名                                組織

Clock.sgi.com                       SGI

Tick.mit.edu                   麻省理工學院

Time.nist.gov                        NIST

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved