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.
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.