AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StrToDateTime sagt ungültiges Datum

Ein Thema von Maliko · begonnen am 3. Jan 2025 · letzter Beitrag vom 14. Jan 2025
Antwort Antwort
Maliko

Registriert seit: 20. Jun 2019
93 Beiträge
 
Delphi 10.3 Rio
 
#1

StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 10:24
Moin,

mein Delphi ärgert mich gerade etwas. Und zwar habe ich folgende Funktion:

Code:
function TMT940Parser.ConvertBuchungsdatum(aDatum: string): TDateTime;
var
  mSettings : TFormatSettings;
begin
  mSettings := TFormatSettings.Create;
  mSettings.DateSeparator := #0;
  mSettings.ShortDateFormat := 'yyMMdd';

  Result := StrToDateTime(aDatum, mSettings);
end;
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.

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.
  Mit Zitat antworten Zitat
hes

Registriert seit: 21. Apr 2024
Ort: Baden Württemberg
19 Beiträge
 
Delphi 12 Athens
 
#2

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 10:46
Komisch. Bei mir funktioniert deine Routine ohne Fehler (Delphi 12.2)
Rainer
  Mit Zitat antworten Zitat
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
148 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 10:55
Funktioniert auch bei mir.

Allerdings fällt mir auf, dass Du StrToDateTime aufrufst, obwohl es keinen Zeitanteil gibt. Versuch es doch mal mit StrToDate.
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#4

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 10:58
Hi,

if you change the string into
  st := '24'#0'12'#0'09'; 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')

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.
Kas
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
93 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 11:16
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.
  Mit Zitat antworten Zitat
hes

Registriert seit: 21. Apr 2024
Ort: Baden Württemberg
19 Beiträge
 
Delphi 12 Athens
 
#6

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 11:32
Gerade mal unter 10.2 getestet, da kommt dein Fehler. Wie schon oben erwähnt unter Delphi 12.2 funktioniert es.
Rainer
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.700 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: StrToDateTime sagt ungültiges Datum

  Alt 3. Jan 2025, 12:07
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.209 Beiträge
 
Delphi 12 Athens
 
#8

AW: StrToDateTime sagt ungültiges Datum

  Alt 14. Jan 2025, 08:00
Es wäre aber auch viel zu einfach, wenn es ein Gegenstück zum FormatDateTime gäbe.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:36 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 by Thomas Breitkreuz