首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 時間類型詳解(二):TDate、TTime、TTimeStamp 結構與轉換

     編輯:Delphi

TDateTime 衍生類型與 TTimeStamp 高精度結構完整解析

TDate、TTime 與 TDateTime 大小相同 (8 字節),互轉無損失,僅為語義區分。TTimeStamp 結構將日期時間拆分為整數天數與毫秒數,便於精確計算與跨平台交換。

相關函數

SysUtils.DateTimeToTimeStamp    SysUtils.TimeStampToDateTime
SysUtils.TimeStampToMSecs       SysUtils.MSecsToTimeStamp
Windows.GetTickCount              Windows.GetCurrentTime

TTimeStamp 結構定義

TTimeStamp = record
  Time: Integer;  {毫秒數,從 0:0:0.000 起}
  Date: Integer;  {天數,從 0001-1-1 起}
end;

轉換示例

var T: TDateTime; TS: TTimeStamp;
begin
  T := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);
  TS := DateTimeToTimeStamp(T);
  ShowMessage(IntToStr(TS.Time));  {40953999 當日逝去毫秒}
  ShowMessage(IntToStr(TS.Date));  {733549 自 0001-1-1 起的天數}

  T := TimeStampToDateTime(TS);
  ShowMessage(FormatDateTime('yyyy-m-d h:m:s:z', T)); {2009-5-22 11:22:33:999}
end;

總毫秒數計算

{手動計算}
733549 * 24 * 60 * 60 * 1000 + 40953999 = 63378674553999

{API 計算}
var ms: Comp;
ms := TimeStampToMSecs(TS);  {63378674553999}
TS := MSecsToTimeStamp(ms);
T := TimeStampToDateTime(TS);

GetTickCount 應用

GetTickCount 返回開機至今毫秒數,結合上述轉換可計算開機絕對時間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved