Delphi datetime運算和filedate的轉換

在服務器中經常會用到時間的計算,如記錄當前時間,存儲當前時間戳,計算兩個時間的差值。

TDateTime
datetime在內存中使用比較多,它是一個double類型,可以很精細的記錄時間。

..
var
	tvNow: TDateTime;
...

var
  lvNow: TDateTime;
  h, m, s, ms: Word;
  dv: Double;
begin
  tvNow := Now();
  mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', tvNow));

  //增加一個小時
  lvNow := IncHour(tvNow, 1);
  mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', lvNow));

  //增加一個小時
  lvNow := IncMinute(lvNow, 60);
  mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', lvNow));

  //計算時間差值
  dv := lvNow - tvNow;
  mmo1.Lines.Add(FloatToStr(dv));
  DecodeTime(dv, h, m, s, ms);
  mmo1.Lines.Add(Format('%d-%d-%d-%d', [h, m, s, ms]));
end;

TFileDate
filedate顧名思義,用來存儲比較多。它是一個int32型,佔4字節,比Double少了一半的字節數,所以用來存數據庫最好不過了。

filedate可以直接和Datetime互相轉換,返回值是一個integer(xe裏面是LongInt)

var
	filedate: LongInt;
begin
	filedate := DateTimeToFileDate(lvNow);
	...
	lvNow := FileDateToDateTime(filedate);
end;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章