我正在尝试获取文件上次修改时的时间戳(精确到毫秒)。目前如果我使用:
FileAge(Filename);
我会将最后修改的日期/时间精确到一秒。例如:12:00:54。是否可以获取最后修改的日期和时间(以毫秒为单位)?
TFile.GetLastWriteTime
或 TFile.GetLastWriteTimeUtc
。
如果系统支持您所需的精度,那么这些函数将提供达到该精度的日期。当然,这完全取决于所使用的文件系统。
FileAge()
有两个版本:
function FileAge(const FileName: string): Integer;
此版本已已弃用。
GetFileAttributesEx()
和/或 FindFirstFile()
来检索时间戳作为 FILETIME
(其精度为 100 纳秒),然后使用以下命令将其转换为 DOS 编码的整数FileTimeToDosDateTime()
,具有秒精度。
stat()
,它返回自纪元以来经过 秒 的时间戳。
function FileAge(const FileName: string; out FileDateTime: TDateTime; FollowLink: Boolean = True): Boolean;
在 Windows 上,它检索与已弃用版本相同的时间戳,但将
FILETIME
转换为 SYSTEMTIME
,然后使用 毫秒精度转换为
TDateTime
。
在 POSIX 上,它使用
stat()
,因此具有 秒 精度。
使用 Delphi 7 和 FindFirst / TSearchRec,可以通过 TSearchRec.FindData 访问高精度时间戳。