Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Datum wird nach "FormatDateTime" falsch ausgegeben (https://www.delphipraxis.net/185895-datum-wird-nach-formatdatetime-falsch-ausgegeben.html)

DieFliege 16. Jul 2015 09:19

Datum wird nach "FormatDateTime" falsch ausgegeben
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Zusammen,

ich stehe mal wieder vor einem (vermutlich kleinem) Problem.

Ich möchte ein Datum, was vom Benutzer eingegeben wird, in ein einheitliches Format umwandeln. Dazu nutze ich "FormatDateTime".

Nun ist mir aufgefallen, wenn der Benutzer ein Datum vor dem 01.01.1965 eingibt, kann es zu einem Ausgabefehler kommen. Alle Daten ab dem 1.1.65 werden korrekt umformatiert.

Beispiel:
Eingabe: 1.1.1964 ===> Ausgabe 01.01.1964
Eingabe: 1.1.64 ===> Ausgabe 01.01.2064
Anhang 43553

Ich habe für die Umwandlung diesen Code verwendet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  edit2.Text := FormatDateTime('dd.mm.yyyy', StrToDateTime(edit1.Text));
  edit4.Text := FormatDateTime('dd.mm.yyyy', StrToDateTime(edit3.Text));
end;
Anhang 43554

Der Fehler tritt nur auf, wenn das Datum vor dem 1.1.65 ist und wenn der Benutzer die Kurzform des Jahres angibt (62 statt 1962). Ab dem 1.1.65 ist es egal, ob das Jahr in Kurzform geschrieben wird oder nicht.

Nun Meine Frage:
Habe ich irgendwas vergessen oder übersehen und wie kann ich den Fehler Abfangen? Habt ihr einen Tipp für mich? Vielen Dank vorab.

LG Micha

(Ps.: verwende Delphi XE4 Prof.)

baumina 16. Jul 2015 09:27

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
In der Hilfe zu SysUtils.StrToDateTime steht eigentlich alles wichtige drin.

Der schöne Günther 16. Jul 2015 09:34

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Toll. Ich habe mich grade mehrere Minuten durch den Quelltext gewühlt um den Hinweis auf http://docwiki.embarcadero.com/Libra...rCenturyWindow
zu finden. Hätte ich mal besser in die Hilfe geschaut :oops:

baumina 16. Jul 2015 09:40

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Ja, F1 drücken kann auch jeder, das ist zu langweilig :lol:

frankyboy1974 16. Jul 2015 09:43

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Hallo TE,

du lässt eine Information weg (sprich die Angabe der Jahrhunderte) und erwartest das Delphi dann auf das von dir gewünschte Ergebniss kommt.

Ich persönlich hätte erwartet das strtodatetime('01.01.65') =>'01.01.0065' ergeben würde.

Wenn ich eine Information weglasse, kann ich eigentlich nicht erwarten, das ein anderer diese Information richtig errät. Das kann funktionieren, muss es aber nicht.

Aber die Erklärung findest du in der Delphi-Hilfe (siehe oben).

mfg

frank

DieFliege 16. Jul 2015 09:51

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Hallo Frank,


vielen Dank für Deine Rückmeldung.

Aber wie erklärst Du mir, dass es ab dem Datum 1.1.65 funktioniert und bis 31.12.64 nicht, wenn der Benutzer das Jahrhundert weg lässt?

LG Micha

mkinzler 16. Jul 2015 09:55

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Zitat:

Aber wie erklärst Du mir, dass es ab dem Datum 1.1.65 funktioniert und bis 31.12.64 nicht, wenn der Benutzer das Jahrhundert weg lässt?
Weil das so festgelegt wurde ( bis 64 -> 2000; ab 65 -> 1900)

Der schöne Günther 16. Jul 2015 09:57

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Ich glaube du hast bislang nicht richtig gelesen. Es gibt einen einstellbaren Wert ab wann er, bei weggelassenem Jahrhundert die Vergangenheit und wann die Zukunft annimmt. Der Standardwert ist 50 Jahre. Nächstes Jahr könntest du die Frage stellen warum es erst ab 1966 "funktioniert"

baumina 16. Jul 2015 09:59

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
F1 :duck:

Sir Rufo 16. Jul 2015 10:02

AW: Datum wird nach "FormatDateTime" falsch ausgegeben
 
Für alle die die F1-Taste verlegt oder noch nicht gefunden haben
http://docwiki.embarcadero.com/Libra....StrToDateTime
Zitat:

Jahresangaben zwischen 0 und 99 werden mithilfe der globalen Variablen
Delphi-Quellcode:
TwoDigitYearCenturyWindow
konvertiert. Dieser Wert wird entweder in einer globalen Variablen (erste Form) oder als Feld des Parameters
Delphi-Quellcode:
AFormatSettings
(zweite Form) gespeichert. Weitere Informationen finden Sie unter "Formatvariablen für Datums-/Zeitangaben".


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