// file: test.js
var dt = new Date("2022-06-31");
console.log(dt);
Ausführen:
node test.js
2022-07-01T00:00:00.000Z
Nicht wundern:
console.log( dt.toString() );
liefert
Fri Jul 01 2022 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
Aktuell?
node -v
v12.22.9
Ok: nodejs mag bei 16.15.1 sein, aber das ist „distributionsaktuell“.
Nächster Test: Im Browser (Chromium, Version 101.0.4951.15 (Entwickler-Build) Ubuntu 22.04 (64-Bit)):
<html>
<body>
<div id="output"></div>
<script>
var dt = new Date("2022-06-31");
document.getElementById("output").innerHTML=dt.toString();
</script>
</body>
</html>
Ausgabe:
Fri Jul 01 2022 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
- Getestet: Keine Änderung mit ['const','var','let','']: (in Nodejs und im Browser)
- Getestet: Ausgabe im HTML und in der Konsole stimmt im Chromium exakt überein.
Fazit: JS kann das Datum (die Zeit) wie angegeben verarbeiten. Aber genau wie PHP wertet es dieses so aus, dass bei formal ungültigen Datumsangaben (wie hier der 31. Juno) dieses so ausgewertet wird, dass ein gültigiger Zeitpunkt (1. Julei) berechnet wird.
Das ist oft nützlich.
Naja. Wenn man das will, dann muss man wohl das Datum selbst zerlegen und prüfen oder aber etwas wie Moment.js verwenden. Das kann angeblich solche „ungültigen“ Angaben erkennen.