Récupérer les dates d'un fichier avec décalage horaire
Bonjour, voici une petite fonction permettant de retourner les dates d'un fichier en prenant en compte le décalage horaire et l'heure d'été.
Le type retourné par la fonction :
Code:
1 2 3 4 5 6 7
|
// Dates d'un fichier
TDatesFichier = record
DateCreation : TDateTime;
DateAcces : TDateTime;
DateModification : TDateTime;
end; |
Et la fonction en elle même :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
// Retourne les dates d'un fichier
function DatesFichier(NomFichier: String): TDatesFichier;
var
HandleFichier: THandle;
DtCreation, DtAcces, DtModif: TFileTime;
SysTimeStruct: SYSTEMTIME;
TimeZoneInfo: TTimeZoneInformation;
DecalageHoraire: Double;
begin
// Récupère le décalage horaire
case GetTimeZoneInformation(TimeZoneInfo) of
TIME_ZONE_ID_STANDARD:
DecalageHoraire :=
(TimeZoneInfo.Bias + TimeZoneInfo.StandardBias) / 1440;
TIME_ZONE_ID_DAYLIGHT:
DecalageHoraire :=
(TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias) / 1440;
end;
// Récupère le handle du fichier
HandleFichier := FileOpen(NomFichier, fmOpenRead or fmShareDenyNone);
// Récupère les dates du fichier
GetFileTime(HandleFichier, @DtCreation, @DtAcces, @DtModif);
// Retourne les dates du fichier
with Result do
begin
// Date de création
if FileTimeToSystemTime(DtCreation, SysTimeStruct) then
DateCreation := SystemTimeToDateTime(SysTimeStruct) - DecalageHoraire
else
DateCreation := 0;
// Date du dernier accès
if FileTimeToSystemTime(DtAcces, SysTimeStruct) then
DateAcces := SystemTimeToDateTime(SysTimeStruct) - DecalageHoraire
else
DateAcces := 0;
// Date de la dernière modification
if FileTimeToSystemTime(DtModif, SysTimeStruct) then
DateModification := SystemTimeToDateTime(SysTimeStruct) - DecalageHoraire
else
DateModification := 0;
end;
end; |