Delphi XE2
Windows 7
Delphi-Quellcode:
var DT:TDateTime;
begin
if TryStrToDateTime('1.1.20255',DT) then begin
ShowMessage(FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz',DT));
end else begin
ShowMessage('Fehler');
end;
end;
Ergibt "01.01.2025 00:00:00.000".
Ich hätte erwartet, dass die Jahreszahl "20255" zu einem Fehler führt.
Ich hätte die Ausgabe "01.01.20255 00:00:00.000" erwartet, denn 20255 ist ja durchaus ein gültiges Datum. 1.1.2025 ist aber definitiv die falsche Ausgabe. Ob aber jetzt TryStrToDateTime oder FormatDateTime fehlerhaft ist, kann man nur sagen, wenn man den Wert von dt nach der Konvertierung kennt.
Edit: Hm, ich habe es gerade ausprobiert: In Delphi 2007 liefert TryStrToDateTime tatsächlich False.
Laut
Doku:
"The maximal correct date supported by TDateTime values is limited to 12/31/9999 23:59:59:999"
Demnach sollte TryStrToDatTime wohl tatsächlich False liefern, wenn es korrekt implementiert ist.