![]() |
Universeller DateTime Converter
Hallo zusammen,
ich schreibe derzeit an einem Parser mit integrierter Textanalyse. Dieser Parser soll auch automatisch Datumsangaben extrahieren können. Dass klappt auch schon ganz gut. Jetzt sollen die Daten jedoch nicht nur analysiert , sondern auch normalisiert werden. Das bedeutet, dass erkannte Format soll vereinheitlicht werden. Intern soll es also als TDateTime gespeichert werden. Das Umwandeln von bekannten Datumsstrings ist relativ einfach. Der Ideenvielfalt an Datums- und Zeitangaben allein im Deutsch- und Englischsprachigem Raum ist jedoch keine Grenze gesetzt. Ich habe teilweise Datumsangaben wie z.B. "Mo, Apr 14 2014, 11:15 am" Bevor ich mich jetzt ransetze und für die verschiedenen Zeit und Datumsangaben Konverter schreibe, wollte ich mich mal umhören, ob es so etwas bereits irgendwo gibt. Im Prinzip suche ich eine etwas ausgefeiltere Variante von StrToDateTime, oder VarToDateTime. Die beiden reichen leider nicht aus. Ich bin auch nicht auf eine Delphi Klasse fixiert. Ich würde auch eine DLL nehmen. Es darf auch gerne etwas kosten. Gruß Benno |
AW: Universeller DateTime Converter
Würde mal schätzen, no chance. Alleine vom Datum her: das Format (Syntax, DateSeparator, die Reihenfolge von Day, Month, und Year ect.) müssen bekannt sein. Und bei der Zeitangabe, woher soll der Parser wissen, was zum Beispiel am bedeutet. Das deutsche Wort am oder als Zeitangabe ante meridiem. Ect..
|
AW: Universeller DateTime Converter
Um den Aufwand bzw. die Machbarkeit zu bestimmen benötigt man eine Liste mit allen möglichen Darstellungen die erkannt werden sollen und was dabei erkannt werden soll.
Daraus baut man sich zunächst einen Unittest mit dem dann mögliche Kandidaten getestet werden. Meistens reduziert sich das Problem nach dieser Aufstellung ;) BTW: Als Test-Zeitpunkt eignet sich hervorragend z.B. 01.02.2003 04:05:06 |
AW: Universeller DateTime Converter
Es könnte auch nicht schaden, redundante Angaben, wie z.B. den Wochentag, zu entfernen. Danach ergibt sich bestimmt ein Bild
Zitat:
![]() |
AW: Universeller DateTime Converter
Ist m.E. ohne Angabe des Formats nicht möglich. Was soll zum Beispiel 01.02.03 sein? 1.2.2003, 3.2.2001, 1 Uhr 2 und 3 sec. ect..
|
AW: Universeller DateTime Converter
Zitat:
Genau aus dem Grund soll man ja auch so eine Liste erstellen, was man reinschickt und was man als Ausgabe erwartet. Irgendwann kommt man an einen Punkt, wo es unlösbar wird, oder nur unter ganz bestimmten Bedingungen/Vorgaben lösbar wird. Dann werden einem auch die Grenzen klar. |
AW: Universeller DateTime Converter
Ei, hann ich doch schonn in #2 geschrieb. :-D
|
AW: Universeller DateTime Converter
Das kann man doch sicher irgendwie in RegEx lösen, alles relativ gleich strukturiert ...
Wo sind die Experten und Gurus (ich kanns nämlich nicht aus dem Stand :-( ) Rollo |
AW: Universeller DateTime Converter
Zitat:
Zusätzliche Angaben, wie z.B. der Wochentag, können als Plausibilitätsprüfung dienen. |
AW: Universeller DateTime Converter
Also, eine Heuristik kann man schon schreiben. Wie Rufo schon schrieb:
PS: RegEx kann man natürlich z.T. auch verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 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