明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

從Internet時間服務(wù)器取得規(guī)范時間

[摘要]由于本機系統(tǒng)時間不準確,所以決定從Internet 時間服務(wù)器獲取標準時間來校正 系統(tǒng)時間,說干就干。 程序設(shè)計步驟如下: 1、 新建一個工程; 2、 在窗體上放一個TEdit控件和一個TClientSocket(在Internet頁下)控件。TEdit用來顯示取得的格林尼治時間轉(zhuǎn)化成北京時...
由于本機系統(tǒng)時間不準確,所以決定從Internet 時間服務(wù)器獲取標準時間來校正  系統(tǒng)時間,說干就干。

程序設(shè)計步驟如下:

1、  新建一個工程;

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

3、  程序代碼如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

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

  ClientSocket1.Port :=13;

  ClientSocket1.Open;

end;

  

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;           // 轉(zhuǎn)化成北京時間;

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

  Edit1.Text :=TimeToStr(TempTime);

end;

    

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

  

     怎么樣?很簡單吧。趕快試一下吧!需要說明一點:由于網(wǎng)絡(luò)延時的緣故,這

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

  則,這無妨大礙。

筆者是從美國海軍天文臺得到標準時間,你還可以從別的時間服務(wù)器上獲間,但由于每個時間服務(wù)器的時間格式不同,所以在編寫程序時要注意作相應(yīng)的處理。

   域名                                組織

Clock.sgi.com                       SGI

Tick.mit.edu                   麻省理工學院

Time.nist.gov                        NIST