AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Datum wird nach "FormatDateTime" falsch ausgegeben

Datum wird nach "FormatDateTime" falsch ausgegeben

Ein Thema von DieFliege · begonnen am 16. Jul 2015 · letzter Beitrag vom 24. Jul 2015
Antwort Antwort
Seite 1 von 3  1 23   
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#1

Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:19
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
datumfehler.jpg

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;
datumfunktion.zip

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.)

Geändert von DieFliege (16. Jul 2015 um 10:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:27
In der Hilfe zu SysUtils.StrToDateTime steht eigentlich alles wichtige drin.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:34
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
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:40
Ja, F1 drücken kann auch jeder, das ist zu langweilig
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:43
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
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#6

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:51
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

Geändert von DieFliege (16. Jul 2015 um 10:52 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:55
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)
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:57
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"
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 10:59
F1
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Datum wird nach "FormatDateTime" falsch ausgegeben

  Alt 16. Jul 2015, 11:02
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 TwoDigitYearCenturyWindow konvertiert. Dieser Wert wird entweder in einer globalen Variablen (erste Form) oder als Feld des Parameters AFormatSettings (zweite Form) gespeichert. Weitere Informationen finden Sie unter "Formatvariablen für Datums-/Zeitangaben".
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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