是否有可能将FileAge提升到毫秒级?

时间:2016-09-10 13:52:47

标签: delphi

我试图在文件上次修改为毫秒时获取文件的时间戳。目前如果我使用:

FileAge(Filename);

我将最后修改日期/时间改为秒。例如:12:00:54。是否可以用毫秒来获取最后修改的日期和时间?

2 个答案:

答案 0 :(得分:4)

使用System.IOUtils单元中的TFile.GetLastWriteTimeTFile.GetLastWriteTimeUtc

如果系统支持您所需的准确度,那么这些功能将提供该准确度的日期。当然这一切都取决于使用的文件系统。

答案 1 :(得分:0)

FileAge()有两个版本:

function FileAge(const FileName: string): Integer;

此版本已弃用

在Windows上,它使用GetFileAttributesEx()和/或FindFirstFile()将时间戳检索为FILETIME 100纳秒精度),但随后使用FileTimeToDosDateTime()将其转换为DOS编码的整数,其精度。

在POSIX上,它使用stat(),它将时间戳返回为自纪元以来经过的

function FileAge(const FileName: string; out FileDateTime: TDateTime; FollowLink: Boolean = True): Boolean;

在Windows上,它会撤消与弃用版本相同的时间戳,但会将FILETIME转换为SYSTEMTIME,然后使用毫秒精度转换为TDateTime

在POSIX上,它使用stat(),因此具有精度。