Rolf b: So und nur so!

Beitrag lesen

NEIN!

Die addDays Funktion, die ich vorgeschlagen habe, hat ein Date Objekt erwartet und ein Date-Objekt zurückgeliefert. Das sollte man nicht ändern. Sie hatte allerdings einen Bug - ich habe getYear verwendet, das ist natürlich Quark, es muss getFullYear heißen, sonst verbrasselt man die Jahrhundertangabe.

Eine addDays Funktion, die einen String erwartet und ein Date Objekt zurückliefert, hat üblen Design-Geruch (Separation of Concerns wird verletzt). Sowas sollte man keinesfalls empfehlen.

Die Konvertierung eines Strings in ein Date ist eine Sache, die von addDays unabhängig benötigt wird und darum unabhängig codiert sein muss. Die Implementierung dieser Konvertierung hängt sehr am Eingabeformat, der Date-Konstruktor ist dazu meinstens ungeeignet, denn er versteht eigentlich nur ISO 8601 ("YYYY-MM-DDTHH:mm:ss.sssZ") und wenn's das nicht ist, probiert er es bei manchen Browsern noch mit "MM-DD-YYYY", gerne auch "MM.DD.YYYY". Aber niemals "DD.MM.YYYY". Das muss jede/jeder selber so umsetzen, wie es gebraucht wird. Oder eine JS-Library einsetzen (man suche nach javascript date library und wird zugeworfen).

Dass ein JS-Neuling darüber erstmal stolpert, ist keine Schande. Es ist eher eine, dass ich auf das erwartete Date-Objekt als Eingabe nicht hingewiesen habe.

Rolf