Bonjour,
J'ai un bout de code que j'utilise depuis longtemps pour convertir une date/heure UTC en Date/Heure locale.
Jusque là je m'en servait principalement sur la date/heure du jour.
Mais aujourd'hui je dois faire la même chose sur une date passée.
Or je remarque que le décalage heure d'été se fait systématiquement sur la date du jour et non sur la date fournie.
Par exemple la date du 20 décembre à 13h va me rendre l'heure local sur 15h (car nous sommes actuellement sur l'heure d'été) alors que ce jour là, c'était l'heure d'hiver cela devrait être 14h.
Je cherche à résoudre ce problème.
La routine en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class function TIso8601.UtcToLocal(const Utc: TDateTime): TDateTime; var LocalSystemTime, UtcSystemTime : TSystemTime; LocalFileTime, UtcFileTime : TFileTime; begin DateTimeToSystemTime(Utc, UtcSystemTime); SystemTimeToFileTime(UtcSystemTime, UtcFileTime); if (FileTimeToLocalFileTime(UtcFileTime, LocalFileTime)) and (FileTimeToSystemTime(LocalFileTime, LocalSystemTime)) then Result := SystemTimeToDateTime(LocalSystemTime) else Result := Utc; end;
Partager