Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datumformatierung (https://www.delphipraxis.net/160114-datumformatierung.html)

Moony 28. Apr 2011 10:18

Datumformatierung
 
Hallo zusammen,

ich habe folgende Situation:

Ich habe ein Datum als String in folgendem Format: YYMMDD. Nun möchte ich die einzelnen Werte extrahieren. Das führe ich mit einem Decode(StrToDate(myString), y, m, d) aus.
Das Problem ist, dass das Datum vor der Umwandlung ins TDateTime Objekt eine 80 für 1980 hat und nach dem dekodieren eine 2080 fürs Jahr.

Gibt es irgendwelche Methoden oder sonstiges die dieses Problem mit dem Jahrtausendwechsel behandeln?

Gruß, Moony

DeddyH 28. Apr 2011 10:20

AW: Datumformatierung
 
Wenn da nur 80 steht, woher willst Du genau wissen, ob es 1980 oder 2080 sein soll? Soll es immer 1980 sein, setz halt vor der Umwandlung ein '19' davor.

[edit] Andere Möglichkeit: Datum wie gehabt umwandeln und wenn es in der Zukunft liegt, 100 Jahre abziehen
Delphi-Quellcode:
DateUtils.IncYear(Datum, -100);
[/edit]

Aviator 28. Apr 2011 10:31

AW: Datumformatierung
 
Willst du das Datum des aktuellen Tages auslesen?
Oder wer gibt dir den String vor, in dem dein Datum steht?

Lol @Detlef: Du hast die gleiche Signatur wie ich. :)

DeddyH 28. Apr 2011 10:34

AW: Datumformatierung
 
Vermutlich wird das Datum aus irgendeinem Datenbestand kommen, sonst wäre das ja einfach zu beheben.

P.S.: Meine Sig is öller :lol:

Aviator 28. Apr 2011 10:39

AW: Datumformatierung
 
Ja da wirste wohl recht haben, dass das Datum irgendwo aus evtl. einer DB o.Ä. ausgelesen wird. Dazu sollte sich der liebe Herr "Threadstarter" mal äußern. ^^

Moony 28. Apr 2011 10:49

AW: Datumformatierung
 
Das Datum wird aus dem maschinellen Code eines Reisepasses, Personalausweises, etc. ausgelesen und dort ist nach MRP das Jahr 2 stellig definiert.

Bei dem Geburtsdatum ist das kein Problem IncYear zu verwenden. Bei dem Ablaufdatum jedoch nicht möglich, da ich nicht wissen kann, wann der Ausweis abläuft.
Hätte ja sein können, dass vielleicht bereits jemand eine Allroundlösung dafür hat...

Gruß, Moony

DeddyH 28. Apr 2011 10:59

AW: Datumformatierung
 
Beim Ablaufdatum könnte man ja das nehmen, was am Nächsten am aktuellen Datum liegt. Es scheint mir recht unwahrscheinlich, dass Du es mit einem Ausweis zu tun bekommst, der bereits 80 Jahre abgelaufen ist :zwinker:

ConnorMcLeod 28. Apr 2011 11:01

AW: Datumformatierung
 
Genau, oder das Datum zwischen heute und dem Geburtsdatum.

DeddyH 28. Apr 2011 11:03

AW: Datumformatierung
 
Dann wäre aber jeder Ausweis bereits abgelaufen.

ConnorMcLeod 28. Apr 2011 11:10

AW: Datumformatierung
 
Ich gehe davon aus, dass zwischen heute und der Geburt weniger als 100 Jahre liegen. Dann kann es nur eine Möglichkeit (19.. oder 20..) für die beiden fehlenden Stellen im Jahr geben, oder? Die beiden anderen hat man ja schon vom Einlesen. Oder habe ich jetzt einen Knoten im Hirn? Kann schon sein ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Seite 1 von 2  1 2      

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