Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#1

TTimezone für ausgewählte bestimmte Zeitzone initialisieren

  Alt 19. Nov 2019, 12:08
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;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat