Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zeitzone im Kundendatensatz speichern (https://www.delphipraxis.net/184008-zeitzone-im-kundendatensatz-speichern.html)

TUX_der_Pinguin 19. Feb 2015 09:29

Zeitzone im Kundendatensatz speichern
 
Hallo DPler,

ich plane in einem Kundendatensatz (Name, Anschrift etc.) die jeweilige Zeitzone zu speichern. Ich möchte mir dann anzeigen lassen wie Spät es beim Kunden gerade ist, aber das sollte ich hin bekommen.

Die eigentliche Frage ist wie abspeichern in welcher Zeitzone der Kunde liegt?

Ich könnte mir jetzt die Differenz zu UTC merken, jedoch wäre dies nicht so ganz eindeutig da es oft für die gleiche Differenz mehrere Zeitzonen gibt und diese unterscheiden sich möglicherweise in anhand von Sommerzeit/Winterzeit Umstellungen.

Das nächste Problem ist wenn ich auf die Liste der Zeitzonen vom Betriebssystem zurückgreife, was passiert wenn ich unter Windows XP eine Zeitzone speicher und anschließend unter Windows 7 diese wieder aufrufen möchte.

Ein kurzer Vergleich der Zeitzonen Einstellungen unter XP und 7 hat gezeigt das es leichte Unterschiede in den Listen der Zeitzonen gibt.

Ich befürchte fasst man muss eine eigene Liste erstellen und pflegen mit Zeitzonen und den jeweiligen Regeln der Sommerzeit/Winterzeit Umstellungen.

Aber vielleicht hat jemand von euch einen Tipp für mich.

mfg

Georg

baumina 19. Feb 2015 09:43

AW: Zeitzone im Kundendatensatz speichern
 
Vielleicht eine Zeitzonendatenbank?

Bernhard Geyer 19. Feb 2015 09:45

AW: Zeitzone im Kundendatensatz speichern
 
Merk dir doch die offizielle Zeitzonenbezeichnung wie z.B. AST (Atlantic Standard Time).
Das XP hier evtl ein bischen anders ist wird daran begründet sein das es nicht mehr gepflegt ist und Änderungen die sich immer wieder ergeben nicht mehr für XP bereit gestellt werden.

mjustin 19. Feb 2015 09:48

AW: Zeitzone im Kundendatensatz speichern
 
Das TZDB (time zone database) Projekt für Delphi könnte hilfreich sein: http://alex.ciobanu.org/?p=380

Sind die Namen der Zeitzonen nicht standardisiert?

Siehe auch http://stackoverflow.com/questions/1...zone-in-delphi

TUX_der_Pinguin 19. Feb 2015 11:42

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von mjustin (Beitrag 1290560)
Das TZDB (time zone database) Projekt für Delphi könnte hilfreich sein: http://alex.ciobanu.org/?p=380

Dieses Projekt habe ich inzwischen auch gefunden, ich habe es mir noch nicht im Detail angesehen.
Bin da über einen Hinweis über ein neuen Typ (TTimezone) in Delphi XE gestoßen, da ich jedoch nur
Delphi 2009 habe weiß ich nicht ob ich dieses Projekt überhaupt verwenden kann.

mjustin 19. Feb 2015 11:47

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von TUX_der_Pinguin (Beitrag 1290588)
Zitat:

Zitat von mjustin (Beitrag 1290560)
Das TZDB (time zone database) Projekt für Delphi könnte hilfreich sein: http://alex.ciobanu.org/?p=380

Dieses Projekt habe ich inzwischen auch gefunden, ich habe es mir noch nicht im Detail angesehen.
Bin da über einen Hinweis über ein neuen Typ (TTimezone) in Delphi XE gestoßen, da ich jedoch nur
Delphi 2009 habe weiß ich nicht ob ich dieses Projekt überhaupt verwenden kann.

Das hatte ich auch gesehen und befürchtet - laut Code wird aber Delphi ab 6 oder Free Pascal ab 2.0 vorausgesetzt:
Code:
{$IFDEF UNSUPPORTED_VERSION}
{$MESSAGE ERROR 'TZDB requires at least Delphi 6 or FreePascal 2.0 to compile!'}
{$ENDIF}

Sharky 19. Feb 2015 13:27

AW: Zeitzone im Kundendatensatz speichern
 
Hai Georg,

ich würde in den Kunden-Datensatz einen Ländercode schreiben.
Dann kannst Du dir aus anderen DBs / Tabellen ganz schnell zusatzinformationen wie Zeitzone (sommer/winterzeit), landesvorwahl usw holen.

Dadurch bist Du viel flexibler als mit der reine Information der Zeitzone.

mjustin 19. Feb 2015 14:00

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von Sharky (Beitrag 1290602)
ich würde in den Kunden-Datensatz einen Ländercode schreiben.

Es gibt Länder die mehrere Zeitzonen haben...

Sir Rufo 19. Feb 2015 14:01

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von Sharky (Beitrag 1290602)
Hai Georg,

ich würde in den Kunden-Datensatz einen Ländercode schreiben.
Dann kannst Du dir aus anderen DBs / Tabellen ganz schnell zusatzinformationen wie Zeitzone (sommer/winterzeit), landesvorwahl usw holen.

Dadurch bist Du viel flexibler als mit der reine Information der Zeitzone.

Das funktioniert vor allem bei Kunden in Amiland hervorragend, nämlich gar nicht. Ein Land und ein paar Zeitzonen.

Sherlock 19. Feb 2015 14:34

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von Sir Rufo (Beitrag 1290605)
Das funktioniert vor allem bei Kunden in Amiland hervorragend, nämlich gar nicht. Ein Land und ein paar Zeitzonen.

Warum in die Ferne schweifen wenn Russland doch auch schon so nahe liegt ;)

Sherlock

hathor 19. Feb 2015 14:36

AW: Zeitzone im Kundendatensatz speichern
 
Ohne DB (600kB,1988 Regeln, 424 TimeZonen) oder Tabelle geht garnichts:
http://www.timeanddate.com/time/map/
https://github.com/pavkam/tzdb

TUX_der_Pinguin 19. Feb 2015 16:08

AW: Zeitzone im Kundendatensatz speichern
 
Vielen dank für die Anregungen, ich schaue mir das mal morgen im Detail an.

Wäre doch gelacht wenn sich da keine Lösung finden lässt. ;-)

Captnemo 19. Feb 2015 22:00

AW: Zeitzone im Kundendatensatz speichern
 
Wie wärs damit beides zu speichern, Ländercodes + Zeitzone. An Hand des Ländercodes kannst du dann feststellen, ob es in dem betreffenden Land eine Sommer-/Winterzeit gibt, und bei Ländern mit mehreren Zeitzonen hast dann auch jeweils die richtige Uhrzeit.

Namenloser 19. Feb 2015 22:22

AW: Zeitzone im Kundendatensatz speichern
 
Passendes Video:
https://www.youtube.com/watch?v=-5wpm-gesOY

Und schon bin ich weg...

hans506 20. Feb 2015 06:03

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von mjustin (Beitrag 1290604)
Zitat:

Zitat von Sharky (Beitrag 1290602)
ich würde in den Kunden-Datensatz einen Ländercode schreiben.

Es gibt Länder die mehrere Zeitzonen haben...

:-D

TUX_der_Pinguin 20. Feb 2015 08:42

AW: Zeitzone im Kundendatensatz speichern
 
Guten Morgen,

ich habe jetzt mal versucht TZDB ( https://github.com/pavkam/tzdb ) zu installieren, da es ja unter Delphi 2009 auch laufen sollte.
Ich bekomme es aber nicht hin, ich habe die Projekt Gruppe geöffnet und wenn ich versuche etwas zu compilieren bzw erzeugen erhalte ich immer folgenden Fehler.

"Package TZDBPK" kann nicht geladen werden. Das System kann die angegebene Datei nicht finden."

Ich habe schon alle möglichen Pfade von dem Projekt sowohl als Bibliotheks- als auch Suchpfad angegeben
und die die entstandenen *.bpl und *.dcp Dateien in die entsprechenden Verzeichnisse zu kopieren.

Komisch ist auch das zwei Units nicht aufgelöst werden können "IOUtils" und "TimeSpan". In der ersten
Unit konnte ich noch "IOUtils" auskommentieren aber in der zweiten wo auch "TimeSpan" steht werden auch einige Undeklarierte Bezeichner angemerkt.

:gruebel:

hathor 20. Feb 2015 10:04

AW: Zeitzone im Kundendatensatz speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist der vollständige Sourcecode für das Beispiel TZVisualizer.
Das *.dpr-File laden und compilieren.

Wenn es nicht geht, liegt es an der DELPHI-Version. Ich habe XE7.

Sharky 20. Feb 2015 12:31

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von hans506 (Beitrag 1290672)
Zitat:

Zitat von mjustin (Beitrag 1290604)
Zitat:

Zitat von Sharky (Beitrag 1290602)
ich würde in den Kunden-Datensatz einen Ländercode schreiben.

Es gibt Länder die mehrere Zeitzonen haben...

:-D

Und jemand mit etwas Inteligenz wüsste wie er das dann in einem Kundendatensatz abbildet.

TUX_der_Pinguin 20. Feb 2015 12:35

AW: Zeitzone im Kundendatensatz speichern
 
Zitat:

Zitat von hathor (Beitrag 1290706)
Im Anhang ist der vollständige Sourcecode für das Beispiel TZVisualizer.
Das *.dpr-File laden und compilieren.

Wenn es nicht geht, liegt es an der DELPHI-Version. Ich habe XE7.

So nach einigen Anpassungen aufgrund von "Undeklarierten Bezeichnern" etc. scheint es zu laufen. Ich musste nur an einigen Stellen ein paar Typen "ersetzten". Es wurde die Verwendung von entsprechenden Kompiler-Schaltern nicht konsequent durchgezogen.

Aber was solls nach etwas "Haareraufen" bin ich wohl doch noch am Ziel angekommen.

Vielen dank noch mal. :thumb:


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