Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi String mit unterschiedlichen Datumsangabe -> TDateTime (https://www.delphipraxis.net/205684-string-mit-unterschiedlichen-datumsangabe-tdatetime.html)

Alex_ITA01 6. Okt 2020 05:49

String mit unterschiedlichen Datumsangabe -> TDateTime
 
Moin zusammen,
ich habe zwei unterschiedliche Arten von Strings mit Datums-/ Uhrzeitangaben.

1)
1/13/2020 2:15:41 PM

2)
08.04.2020 14:22:47

Meine Routine bekommt als Parameter einen String übergeben und soll dann jeweils in ein TDateTime wandeln. Der Parameter kann entweder so 1) aussehen oder so 2).
Welche String/DateTime Routine wandelt mir den String passend in TDateTime um?

haentschman 6. Okt 2020 06:56

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Moin...:P
Zitat:

Meine Routine bekommt als Parameter einen String übergeben und soll dann jeweils in ein TDateTime wandeln
...warum nicht gleich TDateTime? Hat das einen tieferen Sinn? Wo kommt der String her? :gruebel:

Alex_ITA01 6. Okt 2020 07:04

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Da habe ich leider kein Einfluss drauf. Liegt nunmal leider als String vor. Deswegen will ich ja auf TDateTime wandeln, damit man damit arbeiten kann ;-)

DeddyH 6. Okt 2020 07:05

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Delphi-Referenz durchsuchenTryStrToDate, da einfach mal mit verschiedenen FormatSettings durchprobieren.

dummzeuch 6. Okt 2020 08:06

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1474930)
Moin zusammen,
ich habe zwei unterschiedliche Arten von Strings mit Datums-/ Uhrzeitangaben.

1)
1/13/2020 2:15:41 PM

2)
08.04.2020 14:22:47

Meine Routine bekommt als Parameter einen String übergeben und soll dann jeweils in ein TDateTime wandeln. Der Parameter kann entweder so 1) aussehen oder so 2).
Welche String/DateTime Routine wandelt mir den String passend in TDateTime um?

bei 1. stellt sich sofort die Frage: Amerikanisches oder sinnvolles Datumformat, also: Monat/Tag/Jahr oder Tag/Monat/Jahr . Das Beispiel suggeriert amerikanisch, da es keinen Monat 13 gibt, aber bist Du Dir sicher?

Wenn nur diese beiden Formate vorkommen können, würde ich es vermutlich selbst programmieren, einfach um sicherzustellen, dass nicht doch die falsche Konvertierung verwendet wird. Bei bekanntem Format ist das ja nicht weiter schwierig. Und bloß nicht versuchen fehlertolerant zu sein! Alles, was nicht zum Schema passt, sollte eine Exception mit sinnvoller Fehlermeldung werfen, sonst kommt man später in Teufels Küche, weil man mit falschen Datumswerten weiter gearbeitet hat.

BigAl 6. Okt 2020 09:15

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Wie DeddyH schon geschrieben hat:

TryStrToDate

Einmal die Formatsettings lokal und einmal auf TFormatSettings.Invariant (oder was auch immer die Quelle sein könnte). Oder einfach selber die möglichen FormatSettings "zusammenbasten". Habe gerade ähnliche Dinge gemacht. Eingabefelder mit Datum. Allerdings beziehen die sich immer auf das aktuell eingestellte Format. Dies kann aber jedes sein...

Alex_ITA01 7. Okt 2020 05:52

AW: String mit unterschiedlichen Datumsangabe -> TDateTime
 
Mit der TryStrToDate Variante bin ich weitergekommen (+ FormatSettings). Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 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