var
FS: TSearchRec;
FPath: String;
begin
FPath := IncludeTrailingPathDelimiter(dir); {dir是目标文件}
if FindFirst(FPath + '*.*', faAnyFile, FS) = 0 then
begin
FileTimeToLocalFileTime(FS.FindData.ftLastWriteTime, Temp);//FS.FindData.ftLastWriteTime找出文件修改时间
FileTimeToSystemTime(Temp, Tct);
dateTime := SystemTimeToDateTime(Tct); //转成系统时间
end;
function CovFileDate(const Fd: FileTime):TDateTime; // 转换文件的时间格式
var
Tct: SystemTime;
Temp: FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
result :=SystemTimeToDateTime(Tct);
end;
function TForm22.GetFileTime(const FilePath:string): TDateTime; // 得到文件时间,输入值表示目标文件的路径
const
Model='yyyy/mm/dd hh:mm:ss'; // 这是时间的格式
var
Tp: TSearchRec;
T1, T2, T3: string;
begin
FindFirst(FilePath,faAnyFile,Tp); // 查找目标文件
T1 := FormatDateTime(Model, CovFileDate(Tp.FindData.ftCreationTime)); // 返回文件的创建时间
T2 := FormatDateTime(Model, CovFileDate(Tp.FindData.ftLastWriteTime)); //返回文件的修改时间
T3 := FormatDateTime(Model,Now); //返回文件的当前访问时间
FindClose(Tp);
end;
procedure SetFileDateTime(const Tf: string; T1, T2: TDateTime); //设置文件时间,输入值表示目标文件的路径
var
Dt1,Dt2:Integer;
Fs:TFileStream;
Fct,Flt:TFileTime;
begin
Dt1:=DateTimeToFileDate(T1); { T1:创建时间}
Dt2:=DateTimeToFileDate(T2); {修改时间}
try
FS := TFileStream.Create(Tf, fmOpenReadWrite); //创建TFileStream
try
if DosDateTimeToFileTime(LongRec(DT1).Hi, LongRec(DT1).Lo, Fct) and LocalFileTimeToFileTime(Fct, Fct) and dosDateTimeToFileTime(LongRec(DT2).Hi, LongRec(DT2).Lo, Flt) and LocalFileTimeToFileTime(Flt, Flt)
then SetFileTime(FS.Handle,@Fct, @Flt, @Flt); // 设置文件时间属性
finally
FS.Free; //释放
end;
//MessageDlg('修改成功',mtconfirmation, [mbOk], 0); //提示成功
except
//MessageDlg('修改失败',mtError, [mbOk], 0); //因为目标文件正在被使用等原因而导致失败
end;
end;