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

Delphi 獲取系統時間並精確到毫秒的標準實現方案

     編輯:程式設計綜合問答

Delphi 高精度時間獲取與格式化輸出

在 Delphi 開發中,若需獲取精確到毫秒的系統時間並以人類可讀格式(如 2015-08-17 19:32:00.800)展示,標準做法是調用 Windows API GetSystemTime 填充 TSystemTime 記錄,再組合格式化輸出。

核心代碼實現

uses Windows, SysUtils;

procedure GetCurrentTimeMillisecond;
var
  SysTime: TSystemTime;
  DateTimeStr: string;
begin
  GetSystemTime(SysTime);  // 獲取 UTC 時間,若需本地時間用 GetLocalTime
  DateTimeStr := Format('%.4d-%.2d-%.2d %.2d:%.2d:%.2d.%.3d',
    [SysTime.wYear, SysTime.wMonth, SysTime.wDay,
     SysTime.wHour, SysTime.wMinute, SysTime.wSecond,
     SysTime.wMilliseconds]);
  ShowMessage(DateTimeStr);
  // 或寫入日志、顯示到控件
end;

關鍵結構體定義(Windows.pas 已內置)

type
  _SYSTEMTIME = record
    wYear: Word;         // 年
    wMonth: Word;        // 月
    wDayOfWeek: Word;    // 星期(0=Sun)
    wDay: Word;          // 日
    wHour: Word;         // 時
    wMinute: Word;       // 分
    wSecond: Word;       // 秒
    wMilliseconds: Word; // 毫秒(0-999)
  end;
  TSystemTime = _SYSTEMTIME;

進階補充

  • 本地時間 vs UTC:GetSystemTime 返回 UTC;需本地時間請用 GetLocalTime。
  • 更高精度:若需微秒級,可用 QueryPerformanceCounter + QueryPerformanceFrequency,但轉換為日曆時間較繁瑣。
  • 跨平台 (FireMonkey):使用 System.SysUtils.Now 返回 TDateTime(精度約 1ms),配合 FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', Now) 格式化。
  • 線程安全:上述 API 皆為線程安全,可直接在多線程環境調用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved