Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Prüfung, ob aktuelle Zeitzone der deutschen entspricht (https://www.delphipraxis.net/188220-pruefung-ob-aktuelle-zeitzone-der-deutschen-entspricht.html)

bra 11. Feb 2016 11:54

Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
1. Ich brauche für unsere App eine Möglichkeit, herauszufinden, ob das Gerät aktuell in der deutschen Zeitzone unterwegs ist.

Ich habe bisher folgenden Code. Allerdings funktioniert der nicht, wenn man z.B. die afrikanische Zeitzone Windhuk (GMT+1) einstellt, bei denen aber Sommerzeit und Standardzeit mit der unseren vertauscht sind (weil Südhalbkugel).

Delphi-Quellcode:
if TTimeZone.Local.IsStandardTime(EncodeDate(2016, 1, 1)) and TTimeZone.Local.IsDaylightTime(EncodeDate(2016, 7, 1)) and
    ((TTimeZone.Local.IsStandardTime(Now) and (TTimeZone.Local.UtcOffset.TotalMinutes = 60)) or (TTimeZone.Local.IsDaylightTime(Now) and (TTimeZone.Local.UtcOffset.TotalMinutes = 120))) then
    ShowMessage('Zeitzone entspricht deutscher Zeitzone.')
  else
    ShowMessage('Zeitzone entspricht NICHT der deutschen Zeitzone.')
Reine Windows-Funktionen bringen mich hier nicht weiter, da ich das auch für iOS und Android brauche. Hat da jemand eine Idee?

EDIT: Fehler gefunden, da fehlte eine Klammer. Problem gelöst (hab den Quellcode oben angepasst)


2. Gibt es eigentlich die Möglichkeit, ein bestimmtes Datetime, welches in deutscher Zeit ist, in UTC umzuwandeln, sich das Gerät aber in irgendeiner beliebigen Zeitzone aufhält?
Beispiel: 01.01.2000 10:00 Uhr deutsche Zeit soll in UTC umgewandelt werden, das Gerät ist aber bspw. in UTC+5.
Man könnte zwar einfach UTC+1/+2 annehmen, dann müsste ich aber auch wissen, ob das Datum in deutscher Sommerzeit ist oder nicht.

Sir Rufo 11. Feb 2016 12:58

AW: Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
Eine deutsche Zeit ist mir nicht bekannt, eine Mitteleuropäische Zeit bzw. Mitteleuropäische Sommerzeit schon eher :stupid:

Theoretisch sollte es möglich sein mit Delphi-Referenz durchsuchenTTimeZone.ID bzw. Delphi-Referenz durchsuchenTTimeZone.Abbreviation einen eindeutigen Hinweis auf die aktuelle Zeitzone zu bekommen, da die Kommentare das vermuten lassen:
Delphi-Quellcode:
    { Retunrs the time zone identification string. }
    property ID: string read DoGetID;

    { Specifies the display name (localized if possible) of this time zone. }
    property DisplayName: string read GetDisplayNameForNow;

    { Current time zone's abbreviation. Non-localized, always specified, and has the form: GMT[+|-HH[:MM]]. }
    property Abbreviation: string read GetAbbreviationForNow;
nur das die
Delphi-Quellcode:
ID
eben nicht so ganz identifizierend ist (ich kann mir nicht vorstellen, dass auf einem OS mit Timbuktu-Sprache da auch ein "Mitteleuropäische Zeit" herauskommen würde).

Aktuell gibt es bei mir:
Code:
ID ..........: Mitteleuropäische Zeit
DisplayName .: Mitteleuropäische Zeit
Abbreviation : GMT+01

bernau 11. Feb 2016 13:22

AW: Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
TTimeZone.GetUtcOffset könnte helfen. Für Deutschland dürfte es +1 sein. (Nicht getestet)

Sir Rufo 11. Feb 2016 13:25

AW: Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
Zitat:

Zitat von bernau (Beitrag 1330042)
TTimeZone.GetUtcOffset könnte helfen. Für Deutschland dürfte es +1 sein. (Nicht getestet)

Das gibt es auch bei Westzentralafrika :stupid:

bra 11. Feb 2016 13:35

AW: Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
Zitat:

Zitat von bernau (Beitrag 1330042)
TTimeZone.GetUtcOffset könnte helfen. Für Deutschland dürfte es +1 sein. (Nicht getestet)

Nur nicht im Sommer ;)


Zitat:

Zitat von Sir Rufo (Beitrag 1330040)
Aktuell gibt es bei mir:
Code:
ID ..........: Mitteleuropäische Zeit
DisplayName .: Mitteleuropäische Zeit
Abbreviation : GMT+01

Das war auch mein erster Gedanke, allerdings kommt da bei iOS:
ID: Europa/Berlin
Displayname: Mitteleuropäische Normalzeit

Und wenn die Systemsprache nicht deutsch ist, kommt sowieso was anderes. Daher halte ich da nicht so viel von Stringvergleichen.

Wie im Edit schon geschrieben, funktioniert die Abfrage jetzt bei mir. Interessant wäre, ob zu 2. noch jemand eine Idee hat.

p80286 11. Feb 2016 14:40

AW: Prüfung, ob aktuelle Zeitzone der deutschen entspricht
 
Zitat:

Zitat von Sir Rufo (Beitrag 1330043)
Zitat:

Zitat von bernau (Beitrag 1330042)
TTimeZone.GetUtcOffset könnte helfen. Für Deutschland dürfte es +1 sein. (Nicht getestet)

Das gibt es auch bei Westzentralafrika :stupid:

das haben Zeitzonen so an sich.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 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