文件日期在Delphi xe5中返回错误

use*_*392 2 delphi delphi-xe5

我使用一个简单的命令从文件中获取文件日期,但一直得到错误的日期.

在我的电脑上,我看了看日期是14/3/2014.但是当我运行命令时,无论我尝试什么文件,我都会得到30/12/1999,它会保持相同的返回日期.

我试过了

BackupFileDate:=FileAge(S);;
    originalfiledate:=FileAge(fileName);
Run Code Online (Sandbox Code Playgroud)

BackupFileDate:=GetFileModDate(S);
originalfiledate:=GetFileModDate(Filename);

function GetFileModDate(filename : string) : TDateTime;
var
   F : TSearchRec;
begin
   FindFirst(filename,faAnyFile,F);
   Result := F.TimeStamp;

   //Result := F.Time;
   FindClose(F);
end;
Run Code Online (Sandbox Code Playgroud)

两者都有相同的结果.PS:BackupFileDate和originalfiledate现在都被定义为TDate,我已经尝试过TDateTime,结果相同.

我想获得上次编辑文件的日期和时间.

man*_*lio 6

FileAge返回操作系统用于记录文件修改日期和时间等信息的时间戳.

您应该使用FileDateToDateTime函数将Integer值转换为更易于管理的TDateTime格式:

FileDateToDateTime(FileAge(fileName));
Run Code Online (Sandbox Code Playgroud)

注意:

function FileAge(const FileName: string): Integer; overload;
Run Code Online (Sandbox Code Playgroud)

已弃用.还有另一个版本的FileAge

function FileAge(const FileName: string; out FileDateTime: TDateTime; FollowLink: Boolean = True): Boolean;
Run Code Online (Sandbox Code Playgroud)

返回FileDateTime输出参数中FileName的时间戳.

FileAge(filename, timeDate);
Run Code Online (Sandbox Code Playgroud)

编辑

根据数据的使用情况,从UTC转换为本地时间可能非常重要.