在 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;
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;
GetSystemTime 返回 UTC;需本地時間請用 GetLocalTime。QueryPerformanceCounter + QueryPerformanceFrequency,但轉換為日曆時間較繁瑣。System.SysUtils.Now 返回 TDateTime(精度約 1ms),配合 FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', Now) 格式化。