Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeitumrechnung möglich? (https://www.delphipraxis.net/170599-zeitumrechnung-moeglich.html)

Chriscode 25. Sep 2012 13:12

Zeitumrechnung möglich?
 
Hallo zusammen,
ich würde gerne wissen ob es möglich ist eine Datums und Zeitangabe in eine andere Zeitzone umzurechnen?

Konkret möchte ich gerne Datum und Zeitangaben aus Phoenix (Arizona) in die deutsche Zeit umrechnen:
http://www.timeanddate.com/worldclock/city.html?n=197

Die Zeitzone dort ist demnach UTC/GMT -7 hours, weitere Besonderheit:
"No daylight saving time"

Offen gesagt frage ich mich wirklich ob sich sowas überhaut realisieren lässt. Die Funktion müsste ja auch den Kalender berücksichtigen und Sommer/Winterzeit.

Lässt sich sowas mit Delphi realisieren? Wenn ja, wie wäre euer Ansatz?

Vielen Dank!

LG,
Chris

Medium 25. Sep 2012 13:16

AW: Zeitumrechnung möglich?
 
Warum nicht möglich? :shock:

Zielzeit = Quellzeit - [Quellzeit UTC Versatz] + [Zielzeit UTC Versatz] + [Wenn Quellzeit mit Sommerzeit und Datum im Bereich Sommerzeit, dann 1, sonst 0] - [Wenn Zielzeit mit Sommerzeit und Datum im Bereich Sommerzeit, dann 1, sonst 0]

Chriscode 25. Sep 2012 13:39

AW: Zeitumrechnung möglich?
 
Hallo,
vielen Dank für deine schnelle Antwort.

Und was wäre wenn durch die Zeitverschiebung die Zeit in ein anderes Datum fällt? Dann müsste doch z.B. ein Kalender zur Rate gezogen werden und geschaut werden welches Datum der vorherige Tag war?

Irgendwie habe ich so Angst das es etwas "unsauber" ist

LG,
Chris

DeddyH 25. Sep 2012 13:49

AW: Zeitumrechnung möglich?
 
TDateTime besteht aus Datums- und Zeitanteil, von daher verstehe ich diese Frage nicht.

Sir Rufo 25. Sep 2012 13:51

AW: Zeitumrechnung möglich?
 
Genau so isses. Du müsstest dir eine Liste mit allen Sommerzeitumstellungen holen und pflegen.
BTW in Deutschland gab es auch mal eine Sommerzeit mit 2h Versatz ;)

DeddyH 25. Sep 2012 13:59

AW: Zeitumrechnung möglich?
 
Wenn ich keinen Denkfehler mache, braucht man doch "nur" eine Hilfsfunktion UTCToMESZ, die die Regel (Quelle: Wikipedia):
Zitat:

Die Umstellung von der Normal- auf die Sommerzeit findet am letzten Sonntag im März um 1 Uhr UTC, also in der mitteleuropäischen Zeitzone von 2 Uhr MEZ auf 3 Uhr MESZ, statt.
Die Umstellung von der Sommer- auf die Normalzeit findet am letzten Sonntag im Oktober um 1 Uhr UTC, also in der mitteleuropäischen Zeitzone von 3 Uhr MESZ auf 2 Uhr MEZ, statt.
berücksichtigt. Man berechnet also "Phoenix-Time" + 7 Stunden und lässt das dann durch die Hilfsfunktion laufen.

Chriscode 25. Sep 2012 14:00

AW: Zeitumrechnung möglich?
 
Vielen Dank für eure Antworten.

Leider hört sich das ganze relativ kompliziert und für mich als Anfänger nahezu nicht umsetzbar an.

Gibt es keine einfachere Möglichkeit? z.B. Datum und Zeit in einen Timestamp zu konvertieren und daraus die richtige Zeit holen?

LG,
Chris

Uwe Raabe 25. Sep 2012 14:05

AW: Zeitumrechnung möglich?
 
Vielleicht wirst du ja hier fündig: delphi-tzdb: Time Zone Database for Delphi

Sir Rufo 25. Sep 2012 14:06

AW: Zeitumrechnung möglich?
 
Zitat:

Zitat von DeddyH (Beitrag 1184368)
Wenn ich keinen Denkfehler mache, braucht man doch "nur" eine Hilfsfunktion UTCToMESZ, die die Regel (Quelle: Wikipedia):
Zitat:

Die Umstellung von der Normal- auf die Sommerzeit findet am letzten Sonntag im März um 1 Uhr UTC, also in der mitteleuropäischen Zeitzone von 2 Uhr MEZ auf 3 Uhr MESZ, statt.
Die Umstellung von der Sommer- auf die Normalzeit findet am letzten Sonntag im Oktober um 1 Uhr UTC, also in der mitteleuropäischen Zeitzone von 3 Uhr MESZ auf 2 Uhr MEZ, statt.
berücksichtigt. Man berechnet also "Phoenix-Time" + 7 Stunden und lässt das dann durch die Hilfsfunktion laufen.

Und hat Phoenix zu dem Zeitpunkt Sommer oder Winterzeit?

Jonas Shinaniganz 25. Sep 2012 14:07

AW: Zeitumrechnung möglich?
 
Delphi hat eine ganze Menge anzubieten.

http://docwiki.embarcadero.com/RADSt...um_und_Uhrzeit

Wenn du einen Ansatz brauchst:

Um zb. ohne weitere Überlegungen 2 Stunden von einem DateTime abzuziehen, also die Zeit um 2 Stunden zurück zu drehen geht folgendes:

DateUtils.IncHour (Wobei es auch eigtl "DecHour" ist weil du negative Werte übergeben kannst)

Delphi-Quellcode:
Jetzt : TDatetime

IncHour(Jetzt,-2);


Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
Seite 1 von 3  1 23      

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