uses Registry;
function GmtFromSystemTime: TDateTime;
const
RootK = HKEY_LOCAL_MACHINE;
KName = 'SYSTEM\CurrentControlSet\Control\TimeZoneInformation';
begin
with TRegistry.Create do
try
RootKey := RootK;
if OpenKey(KName, False) then
try
Result := ((Now * 96) + ReadInteger('ActiveTimeBias') div 15) / 96;
finally
CloseKey;
end;
finally
Free;
end;
end;
Remarque :
Exemple d'utilisation :
var Gmt: TDateTime;
begin
Gmt := GmtFromSystemTime;
edGMTime.Text := DateTimeToStr(Gmt);
end;
Ne pas oublier d'ajouter Registry aux uses.
Mise à jour tenant compte du fait que certaines zones sont décalées par fraction d'heure (1/4 heure, 1/2 heure).