Dispones de la función GetTimeZoneInformation, que te devuelve una serie de información sobre zona horaria. En el ejemplo siguiente se obtiene la diferencia entre la hora local y GMT, pero la estructura TIME_ZONE_INFORMACION muestra además información sobre el horario de verano. Revisa la ayuda para ver una lista completa.
Código Delphi
[-]
var
Info: TIME_ZONE_INFORMATION;
Str: string;
Bias: TDateTime;
begin
GetTimeZoneInformation(Info);
Bias:= abs(Info.Bias) / 1440;
if Info.Bias < 0 then
Str:='Zona horaria: GMT+' + TimeToStr(Bias) + #13
else
Str:='Zona horaria: GMT-' + TimeToStr(Bias) + #13;
Bias:= abs(Info.Bias + Info.DaylightBias) / 1440;
if Info.Bias + Info.DaylightBias < 0 then
Str:= Str + 'Zona horaria: UTC+' + TimeToStr(Bias)
else
Str:= Str + 'Zona horaria: UTC-' + TimeToStr(Bias);
ShowMessage(Str);
end;