Rolf B: Es soll eine js-Variable an ein html-Input-Feld als Vorbelegung übergeben werden.

Beitrag lesen

problematische Seite

Hallo Peter,

ich weiß, woran es liegt - aber ich überlege gerade noch an einer Lösung.

Problem ist, dass das Date-Objekt seine Informationen als UTC-Zeit speichert. Wenn Du ein Date-Objekt mit "2023-03-13" erzeugst, dann ist das in Wahrheit "2023-03-13 00:00:00.000" lokaler Zeit und "2023-03-12 23:00:00.000" UTC Zeit. Sobald die Sommerzeit losgeht, ist es sogar "2023-03-12 22:00:00.000" UTC.

Das input-Element übernimmt nicht das Datum der lokalen Zeit, sondern das Datum der UTC Zeit. Was doof ist.

Ich muss jetzt gucken, wie Du ein Datum als UTC-Datum erzeugst. Für Deutschland dürfte es am einfachsten sein, das Date-Objekt mit Uhrzeit 12:00:00 zu erzeugen.

let gestern = new Date(heute.getFullYear(),
                             heute.getMonth(),
                             heute.getDate() - 1,
                             12, 0, 0);

Diese Lösung ist nicht für alle Länder tragfähig, aber in D schon.

Ich habe gerade noch bei Stackoverflow einen interessanten Hack gefunden: Schwedisches Datum!

let gestern = new Date(heute.getFullYear(),
                             heute.getMonth(),
                             heute.getDate() - 1)
console.log(gestern.toLocaleString("sv").substring(0,10));
// Ausgabe am 14.03.2023: "2023-03-13 00:00:00"

Das schwedische Datumsformat ist YYYY-MM-DD, also ISO-ähnlich. d.h. auf diese Weise bekommst Du einen ISO Datumsstring ohne Timezone-Verfälschung. Den kannst Du dann dem value des input-Elements zuweisen.

inputElement.value = gestern.toLocaleString("sv").substring(0,10);

Schön ist anders, aber funktioniert 😀

Rolf

--
sumpsi - posui - obstruxi