Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TTimezone für ausgewählte bestimmte Zeitzone initialisieren (https://www.delphipraxis.net/202578-ttimezone-fuer-ausgewaehlte-bestimmte-zeitzone-initialisieren.html)

QuickAndDirty 19. Nov 2019 12:08

TTimezone für ausgewählte bestimmte Zeitzone initialisieren
 
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;

Uwe Raabe 19. Nov 2019 13:29

AW: TTimezone für ausgewählte bestimmte Zeitzone initialisieren
 
Vielleicht wirst du hier ja fündig: https://github.com/pavkam/tzdb

QuickAndDirty 20. Nov 2019 10:52

AW: TTimezone für ausgewählte bestimmte Zeitzone initialisieren
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1451564)
Vielleicht wirst du hier ja fündig: https://github.com/pavkam/tzdb

Ja das sieht so aus.
Es ist wirklich kompliziert mit den Zeitzonen und Datumsgrenzen wenn man eine timeline für weltweit reisende zusammen setzen will aber in der Datenbank keine vollständige UTC angeben kann, weil andere Software die Datenbank halt so braucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz