Hallo
Dateutils.TTimeZone.Local
erzeigt ein Objekt mit den Zeitzonen daten für den Ort des Devices.
Ich brauche mehrere dieser Zeitzonen zum konvertieren von Uhrzeit Darstellungen.
Dateutils.TTimeZone.Place(aID:String):TTimeZone;
Der Zeitoffset reicht nicht aus da die Zeiten auf verschiedenen halbkugeln liegen können.
Wenn das nicht klappt
muss ich den Benutzer nicht nach der Zeitzone sondern nach Folgendem fragen:
UTCOffset:-12 bis +14
Day light savingstime beachten: Ja/Nein
Wenn ja dann, Halbkugel: Nord/Süd
Ich denke das es besser ist gleich ein zweites Zeitzonen Objekt zu haben....das diese informationen mitbringt und auch anwendet.
Leider scheint das Ganze immer aus dem Betriebsystem abgerufen zu werden statt aus einem Katalog in delphi.
Wie rufe ich andere Zeitonen aus den Betriebsystemen ab?
Delphi-Quellcode:
constructor TLocalTimeZone.Create;
{$IF Defined(POSIX) and not Defined(MACOS)}
var
Ltm: tm;
{$ENDIF}
begin
inherited;
{ Create and initilizite proper structures used for caching }
FYearlyCache := TDictionary<Word, TYearlyChanges>.Create();
SetLength(FFastYearlyArray, FastYearlyArrayEnd - FastYearlyArrayStart + 1);
// Cache TZ information for later checks
{$IF Defined(MSWINDOWS)}
FTZ := Default(TTimeZoneInformation);
GetTimeZoneInformation(FTZ);
{$ELSEIF Defined(MACOS)}
FTZ := CFTimeZoneCopyDefault();
{$ELSEIF Defined(POSIX)}
FTime := time(nil);
localtime_r(FTime, Ltm);
FOff := Ltm.tm_gmtoff;
FAbb := Ltm.tm_zone;
{$ENDIF POSIX}
end;