Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Universelle Datums Umwandlung (https://www.delphipraxis.net/180159-universelle-datums-umwandlung.html)

yogie 26. Apr 2014 14:11

Universelle Datums Umwandlung
 
Hallo zusammen,

in meinen Programmen verwende ich immer eine automatische Korrektur
des Dezimaltrenners in dem ich Punkt bzw. Komma durch decimalseparator
ersetze. Das hat den Vorteil, das Datensätze die im Ausland erzeugt
wurden auch in Deutschland verarbeitet werden können.

Nun suche ich eine Entsprechung für die diversen Datums/Zeit-Formate.
D.h. ich möchte ein Datum (eine Zeit) gleichgültig in welchem Format
sie in einer Datei abgelegt ist, in das Datumsformat des Arbeitsplatzes
überführen.

Gibt es da einen eingeführte Methode?

Sir Rufo 26. Apr 2014 14:22

AW: Universelle Datums Umwandlung
 
Den Sinn kann ich nicht verstehen, bin damit wohl auch nicht alleine und deshalb gibt es sowas auch nicht.

Das UI hat eine durch das Betriebssystem vorgegebene Formatierung der Werte (Datum, Uhrzeit, Dezimaltrenner). Damit kann man dem Benutzer diese Werte präsentieren und auch entgegennehmen.

In der Datenschicht gibt es genau ein Format für diese Speicherung.

Wie war das Problem noch mal?

yogie 26. Apr 2014 14:43

AW: Universelle Datums Umwandlung
 
... super schnell ...

Eventuell ist das Ganze bei mir ja ein Designproblem.

Ich speichere die Daten als CSV Datei. Das muß aus
bestimmten Gründen so sein. Das Datun und
die Uhrzeit kommen so in die Datei wie sie
auch angezeigt werden und das ist halt von Land zu
Land verschieden. Bekomme ich nun eine Datensatz
aus Kanada kann ich zwar Datun und Uhrzeit (wie
gespeichert) lesen und anzeigen, nur wenn ich dann
Rechnungen z.B. Mit der Zeitinformation ausführen
möchte, klappt das eben nur wenn auf dem Arbeitplatz
das "richtige" Zeitformat eingestellt ist.

Sir Rufo 26. Apr 2014 14:48

AW: Universelle Datums Umwandlung
 
Ja und das ist eben falsch.

Deine Anwendung muss sich auf der einen Seite mit der CSV-Datei unterhalten und auf der anderen Seite mit dem Benutzer.

Für die Kommunikation mit dem Benutzer verwende die Format-Einstellung des Systems, für die Kommunikation mit der CSV eine Format-Einstellung, die immer gleich ist.

Du willst doch nicht das speichern, was der Benutzer eingegeben hat, sondern das, was er damit ausdrücken will.

sx2008 26. Apr 2014 15:00

AW: Universelle Datums Umwandlung
 
Zitat:

Zitat von yogie (Beitrag 1257077)
Das Datun und
die Uhrzeit kommen so in die Datei wie sie
auch angezeigt werden und das ist halt von Land zu
Land verschieden

Dann würde ich empfehlen die ISO 8601 anzuwenden und immer nur dieses standardisierte Datumsformat zu verwenden.

Ansonsten:
eine Funktion die jedes beliebige Datumsformat in ein TDateTime verwandeln kann, wird es nicht geben weil man das Datumsformat nicht eindeutig erkennen kann.
"04.03.14" - ist das der 4. März 2014 oder der 3. April 2014 oder der 14. April 2004?
Dagegen ist "2014-03-04" völlig eindeutig.
Würde man der Funktion zur Datums/Zeitumwandlung ein Pattern mitgeben (z.B. "mm.dd.yy") dann wäre die Umwandlung natürlich möglich.



PS:
Wer verdient sein Geld als Softwareentwickler und kennt die ISO 8601 nicht bzw. hat noch nie die ISO in seiner Software verwendet?
Bitte melden und kräftig schämen.

yogie 26. Apr 2014 15:57

AW: Universelle Datums Umwandlung
 
...ok, nun weiß ich Bescheid und schäme mich ...
eventuell zur Erklärung: es handelt sich um eine
Portierung einer relativ alten Awendung, aber
das entschuldigt natürlich nicht, hier nicht
richtig nachgedacht zu haben. Ich werde die
Speicherung nach ISO wohl nachrüsten.

Danke für die Hinweise

Sir Rufo 26. Apr 2014 16:21

AW: Universelle Datums Umwandlung
 
Schämen musst du dich nicht - mit der flachen Hand vor die Stirn schlagen reicht :mrgreen:

Die ISO-Norm musst du auch nicht umsetzen, ist aber durchaus ratsam.
Wichtig ist nur, dass die Daten unabhängig von den lokalen Format-Einstellungen immer gleichartig gespeichert werden.

Mit der ISO-Norm machst du genau das und die Vorgaben (was ist gleichartig) sind schon definiert ;)

p80286 26. Apr 2014 16:56

AW: Universelle Datums Umwandlung
 
Zitat:

Zitat von sx2008 (Beitrag 1257080)
Wer verdient sein Geld als Softwareentwickler und kennt die ISO 8601 nicht bzw. hat noch nie die ISO in seiner Software verwendet?
Bitte melden und kräftig schämen.

Da bist du aber arg ungerecht, ich kenn das Format erst seit ca 30Jahren.:mrgreen:

Gruß
K-H


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