程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi獲取當前系統時間

用Delphi獲取當前系統時間

編輯:Delphi
  在開發應用程序時往往需要獲取當前系統時間。盡管Y2K似乎已經平安過去,但在我們新開發的應用程序中還是要謹慎處理“時間”問題。
  
  在《融會貫通--Delphi4.0實戰技巧》(以下簡稱“該書”)第89頁專門介紹了兩種獲取當前系統時間的方法,但這兩種方法都存在不足或錯誤,以下就此進行討論。
  
  該書第一種方法是利用Time()函數獲得當前系統時間,返回結果是TDateTime結構類型的變量。例如:
  
  procedure TForm1.Button2Click(Sender: TObject);
  
  var
  
  DateTime:TDateTime;
  
  begin
  
  DateTime:=Time();
  
  Caption:=DateToStr(DateTime)+' '+TimeToStr(DateTime);
  
  end;
  
  但不論何日期,其結果卻都是99-12-30 xx:xx:xx, 顯然日期出錯了。通過分析Delphi的幫助,Time()用於返回正確的“時間--時分秒”即TimeToStr(DateTime),而不應該用於返回“日期”。事實上,單獨用於返回日期的系統函數是Date。
  
  那麼有什麼是既可返回正確的“時分秒”又可返回正確的“年月日”呢? 可以用Now函數,例如:
  
  procedure TForm1.Button1Click(Sender: TObject);
  
  var
  
  mytime: TDateTime;
  
  begin
  
  mytime:=Now;
  
  Caption:=DateToStr(mytime)+' '+TimeToStr(mytime);
  
  //或直接用 Caption := DateTimeToStr(Now);
  
  end;
  
  用Now返回的日期格式中年只有2位,即2000年顯示為00, 這似乎不太令人滿意. 此外Now和Time都只能獲得精確到秒的時間,為了得到更精確的毫秒級時間,可以使用API函數GetSystemTime,它對應的TSystemTime類型的定義為:
  
  TSystemTime = record
  
  wYear: Word;
  
  wMonth: Word;
  
  wDayOfWeek: Word;
  
  wDay: Word;
  
  wHour: Word;
  
  wMinute: Word;
  
  wSecond: Word;
  
  wMilliseconds: Word;
  
  end;
  
  顯然,在程序邏輯中還能夠方便地使用其結構成?時---各類時間值,因此使用函數GetSystemTime具有很大優越性。但該書中該函數的用法是錯誤的,通過查閱Windows SDK幫助可知,該函數原型為:
  
  VOID GetSystemTime(LPSYSTEMTIME lpst),參數指針lpst獲取系統時間,因此可如以下程序段實現:
  
  procedure TForm1.Button3Click(Sender: TObject);
  
  var
  
  SysTime: TsystemTime;
  
  begin
  
  GetSystemTime(SysTime);
  
  Caption:=IntToStr(SysTime.wYear)+' '+IntToStr(SysTime.wMonth);
  
  //if SysTime.wYear>2000 then
  
  // ......在程序邏輯中利用獲取的各類時間值 
  
  end;
  
  綜合以上討論,獲取當前系統時間利用函數GetSystemTime比較方便而且靈活。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved