![]() |
StrToDateTime sagt ungültiges Datum
Moin,
mein Delphi ärgert mich gerade etwas. Und zwar habe ich folgende Funktion:
Code:
Da schmeiße ich als aDatum den String '241209' rein. So wie ich das verstehe müsste durch die FormatSettings die Resultzuweisung eigentlich den 09.12.2024 zurückgeben. Tut es aber nicht, sondern ich bekomme eine EConvertException zurück.
function TMT940Parser.ConvertBuchungsdatum(aDatum: string): TDateTime;
var mSettings : TFormatSettings; begin mSettings := TFormatSettings.Create; mSettings.DateSeparator := #0; mSettings.ShortDateFormat := 'yyMMdd'; Result := StrToDateTime(aDatum, mSettings); end; Kann mir da vielleicht irgendjemand sagen welchen Wald ich da vor lauter Bäumen nicht sehen kann? Die genaue Fehlermeldung lautet: 241209 ist keine gültige Datums- und Uhrzeitangabe. |
AW: StrToDateTime sagt ungültiges Datum
Komisch. Bei mir funktioniert deine Routine ohne Fehler (Delphi 12.2)
|
AW: StrToDateTime sagt ungültiges Datum
Funktioniert auch bei mir.
Allerdings fällt mir auf, dass Du StrToDateTime aufrufst, obwohl es keinen Zeitanteil gibt. Versuch es doch mal mit StrToDate. |
AW: StrToDateTime sagt ungültiges Datum
Hi,
if you change the string into
Delphi-Quellcode:
Then it will work, if you are going to parse the string first then ditch the #0 and use something useful, (like adjust it to something working '24/12/09')
st := '24'#0'12'#0'09';
Also this is more like a bug or short coming in the RTL since ages, as it is enforce the need for separator even with #0. Could be fixed in newer versions ! as not working on my XE8. |
AW: StrToDateTime sagt ungültiges Datum
StrToDate habe ich auch schon versucht. Selbes Ergebnis. Ich hab jetzt das Datum erst mal Manuell mit EncodeDate geparsed, damit funktioniert es. Wir wollen dieses Jahr eh noch auf Delphi 12 wechseln, dann versuch ichs noch mal über den anderen Weg. Trotzdem Danke euch.
|
AW: StrToDateTime sagt ungültiges Datum
Gerade mal unter 10.2 getestet, da kommt dein Fehler. Wie schon oben erwähnt unter Delphi 12.2 funktioniert es.
|
AW: StrToDateTime sagt ungültiges Datum
Ich würde solche Geschichten immer manuell parsen. Denn wenn sich etwas an der Funktionsweise ändert, funktioniert ein solches unübliches Format vielleicht plötzlich mit einer neuen Delphiversion nicht mehr.
Wenn du einen Ausdruck haben möchtest, den du ggf. anpassen kannst, wären reguläre Ausdrücke noch eine in diesem Fall sehr einfache Lösung, wenn auch nicht die schnellste Variante. Aber StrToDate ist ja auch nicht besonders schnell im Vergleich zu einer manuellen Umwandlung bei einem solchen fixen Format. |
AW: StrToDateTime sagt ungültiges Datum
Es wäre aber auch viel zu einfach, wenn es ein Gegenstück zum FormatDateTime gäbe. :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz