国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

用Delphi獲取當前系統時間

2019-11-18 18:54:25
字體:
來源:轉載
供稿:網友

在開發應用程序時往往需要獲取當前系統時間。盡管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比較方便而且靈活。


上一篇:用Delphi實現遠程屏幕抓取

下一篇:在Delphi中讀取另一臺計算機的屏幕

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 黄浦区| 桐庐县| 普兰县| 桐乡市| 罗城| 甘南县| 莱阳市| 泰和县| 饶河县| 忻州市| 长武县| 娄底市| 清流县| 子洲县| 青冈县| 牟定县| 阿克苏市| 涟水县| 定陶县| 兴义市| 海宁市| 和硕县| 德阳市| 湖州市| 大英县| 嵊泗县| 化州市| 三河市| 佛坪县| 扶余县| 简阳市| 兴海县| 嵊州市| 厦门市| 嘉禾县| 湘潭市| 青阳县| 承德县| 信宜市| 阜平县| 金川县|