OPUS4 / opus4-common

Core package for OPUS 4.
Other
0 stars 5 forks source link

Umgang mit ungültigen Date-Objekten #102

Closed j3nsch closed 5 months ago

j3nsch commented 5 months ago

Wenn ein Date-Objekt mit NULL oder einem leeren String erzeugt wird, dann werden alle Teilwerte, also Jahr, Monat, Stunde usw., auf NULL gesetzt. Wird ein solches Date-Objekt dann in einen String umgewandelt, lautet dieser 0000-00-00. Diese String wird dann unter Umständen in der Datenbank gespeichert und später wieder eingelesen.

Ein Date-Objekt, dass mit dem String 0000-00-00 erzeugt wird, nach dem Lesen aus der Datenbank, wird mit einem ungültigen Datum initialisiert. Der String für das Date-Objekt ist dann -001-11-30. Das führt zu Problemen bei der Verarbeitung im Dokument-XML, wo die Jahreszahl dann z.B. dann -001 ist.

Natürlich sollten idealerweise keine Date-Objekte mit ungültigen Werten initialisiert werden. Es könnte dann auch sofort eine Exception geworfen werden. Es ist aber manchmal sinnvoll leere Date-Objekte anzulegen. deren einzelnen Werte anschließend gesetzt werden. Außerdem sollte das Verhalten im Augenblick nicht so verändert werden, dass Eingriffe an allen Stellen, die Date-Objekte verwenden, notwendig sind. Daher soll die Funktion __toString ab jetzt leere Strings für ungültige Angaben ausgeben. Das sollte für ein vorhersagbares Verhalten sorgen.