DateToStr
-
Hallo,
ich lese aus einer Datei ein Datum und möchte prüfen ob disese richtig ist!
soweit kein Problem, wenn es sich um ein datumsformat = 10.11.2006 handelt.
Doch in der Datei werden auch andere Formate geliefert, wie z.b = Nov 10, 2006AnsiString Puffer = "10.11.2006" AnsiString DefaultDate = "01.01.1970"; TDateTime TPuffer = StrToDateDef(Puffer.c_str(),StrToDate(DefaultDate)); if (DateToStr(TPuffer) != "01.01.1970") { m_st_NewWebAuftrag.Termin = Puffer; }Wie bekomme ich es hin, dass auch eine Datum (Nov 10, 2006) auf richtigkeit geprüft wird! Ich versuche das DateTime Objekt mit
FormatString("mmm dd, yyyy");umzustellen, aber irgendwie will es nich, oder ich versteht es nicht!
Kann mit jemand eine guten Tip dazu geben?
thx a lot Sven
-
Hallo
Die Methode FormatString ist genau für den umgekehrten Weg, um aus einem TDateTime ein formatierten String zu erstellen.
Wie die BCB-Hilfe zu StrToDateDef sagt, kann diese Funktion nur Datumsangaben in Zahlenschreibweise umformenBCB-Hilfe schrieb:
Der String muß aus zwei oder drei Zahlen bestehen, die durch das in der globalen Variable DateSeparator definierte Zeichen voneinander getrennt sind. Die Reihenfolge von Tag, Monat und Jahr wird von der globalen Variable ShortDateFormat bestimmt (mögliche Kombinationen sind M/T/J, T/M/J und J/M/T).
Wenn du also mit Monatsnamen arbeitst, must du selber parsen und auswerten (Monatsnamen sind ja sprachabhängig)
/Edit : Desweiteren sollte zum Verwenden eines im Quellcode fest verankerten TDateTime-Wertes nicht die Konvertierfunktion, sondern direkt der Konstruktor von TDateTime genommen werden
TDateTime(1970, 1, 1);Allerdings würde ich in deinem Fall lieber StrToDate() nehmen, und Konvertierfehler mit try/catch abfangen. Das erspart dir das "Fehlerdatum".
bis bald
akari
-
[Edit] klappt doch nicht...

-
Danke
@akari
habe es so gemacht wie du empfohlen hast!
Im catch parse ich die Teile des Datums raus und versuche es erneut mit StrToDate.
Somit klappt es wie ich es mir vorstelle!thx a lot Sven