获取文件建立修改日期 uses Windows,ShellAPI; // ================================================================ // Return the three dates (Created,Modified,Accessed) // of a given filename. Returns FALSE if file cannot // be found or permissions denied. Results are returned // in TdateTime VAR parameters // ================================================================ function GetFileTimes(FileName : string; var Created : TDateTime; var Modified : TDateTime; var Accessed : TDateTime) : boolean; var FileHandle : integer; Retvar : boolean; FTimeC,FTimeA,FTimeM : TFileTime; LTime : TFileTime; STime : TSystemTime; begin FileHandle := FileOpen(FileName,fmShareDenyNone); Created := 0.0; Modified := 0.0; Accessed := 0.0; if FileHandle < 0 then RetVar := false else begin RetVar := true; GetFileTime(FileHandle,@FTimeC,@FTimeA,@FTimeM); FileClose(FileHandle); // Created FileTimeToLocalFileTime(FTimeC,LTime); if FileTimeToSystemTime(LTime,STime) then begin Created := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); Created := Created + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); end; // Accessed FileTimeToLocalFileTime(FTimeA,LTime); if FileTimeToSystemTime(LTime,STime) then begin Accessed := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); Accessed := Accessed + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); end; // Modified FileTimeToLocalFileTime(FTimeM,LTime); if FileTimeToSystemTime(LTime,STime) then begin Modified := EncodeDate(STime.wYear,STime.wMonth,STime.wDay); Modified := Modified + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds); end; end; Result := RetVar; end; procedure Test; var CDate,MDate,ADate : TDateTime; begin if GetFileTimes('c:\autoexec.bat',CDate,MDate,ADate) then begin Label1.Caption := FormatDateTime('dd/mm/yyyy hh:nn',CDate); Label2.Caption := FormatDateTime('dd/mm/yyyy hh:nn',MDate); Label3.Caption := FormatDateTime('dd/mm/yyyy hh:nn',ADate); end; end;
uses Windows,ShellAPI; // ================================================================
// Return the three dates (Created,Modified,Accessed)
// of a given filename. Returns FALSE if file cannot
// be found or permissions denied. Results are returned
// in TdateTime VAR parameters
// ================================================================ function GetFileTimes(FileName : string;
var Created : TDateTime;
var Modified : TDateTime;
var Accessed : TDateTime) : boolean;
var FileHandle : integer;
Retvar : boolean;
FTimeC,FTimeA,FTimeM : TFileTime;
LTime : TFileTime;
STime : TSystemTime;
begin
FileHandle := FileOpen(FileName,fmShareDenyNone);
Created := 0.0;
Modified := 0.0;
Accessed := 0.0; if FileHandle < 0 then
RetVar := false
else begin
RetVar := true;
GetFileTime(FileHandle,@FTimeC,@FTimeA,@FTimeM);
FileClose(FileHandle); // Created
FileTimeToLocalFileTime(FTimeC,LTime);
if FileTimeToSystemTime(LTime,STime) then begin
Created := EncodeDate(STime.wYear,STime.wMonth,STime.wDay);
Created := Created + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds);
end; // Accessed
FileTimeToLocalFileTime(FTimeA,LTime);
if FileTimeToSystemTime(LTime,STime) then begin
Accessed := EncodeDate(STime.wYear,STime.wMonth,STime.wDay);
Accessed := Accessed + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds);
end; // Modified
FileTimeToLocalFileTime(FTimeM,LTime);
if FileTimeToSystemTime(LTime,STime) then begin
Modified := EncodeDate(STime.wYear,STime.wMonth,STime.wDay);
Modified := Modified + EncodeTime(STime.wHour,STime.wMinute,STime.wSecond,STime.wMilliSeconds);
end; end; Result := RetVar;
end;
procedure Test;
var CDate,MDate,ADate : TDateTime;
begin
if GetFileTimes('c:\autoexec.bat',CDate,MDate,ADate) then begin
Label1.Caption := FormatDateTime('dd/mm/yyyy hh:nn',CDate);
Label2.Caption := FormatDateTime('dd/mm/yyyy hh:nn',MDate);
Label3.Caption := FormatDateTime('dd/mm/yyyy hh:nn',ADate);
end;
end;
得到的无论任何文件,都是1899-12-29呀
我想只要显示年月日,怎么做呢?