Antwort an „Gunnar Bittersmann“ verfassen

@@der henry

	let begin = new Date();
	let end = new Date();

Die Objekte werden nicht mehr geändert (nur noch Eigenschaften von diesen), const ist angebracht, nicht let.

	begin.setHours(0);
	begin.setMinutes(0);
	begin.setSeconds(0);

Damit kriegst du Mitternacht lokaler Zeit; für MESZ also 22:00 des Vortags.

	document.getElementById('from').valueAsDate = begin;

Diesen Zeitpunkt verwendest du als Wert, und genau das wird dann auch angezeigt – in UTC. „Eine Sache, die der Eingabetyp datetime-local nicht bietet, ist eine Möglichkeit, die Zeitzone und/oder das Gebietsschema der Datum/Uhrzeit-Steuerung festzulegen. Dies war im Input-Typ datetime verfügbar, aber dieser Typ ist jetzt obsolet und wurde aus der Spezifikation entfernt.“ [MDN]

Stattdessen: die lokale Zeit im Format YYYY-MM-DDTHH:mm als value zuweisen.

Aktuelles Jahr, Monat, Tag in lokaler Zeitzone bekommst du mit

const now = new Date();
const todayString = `${
	now.getFullYear().toString().padStart(4, '0')
}-${
	(now.getMonth() + 1).toString().padStart(2, '0')
}-${
	now.getDate().toString().padStart(2, '0')
}`;

(now.getMonth() + 1) – go home, JavaScript, you’re drunk. Wie so ziemlich alle Programmiersprachen.

	document.getElementById('to').valueAsDate = end; 

Wenn deine Eingabefelder in einem Formular sind und ein name-Attribut haben, dann hast du in JavaScript bereits eine Referenz darauf und musst dir die Elemente nicht aus dem DOM raussuchen.

Codepen


<td>
<label>VON:<input id="from" type="datetime-local"></label>
</td>

Dragon, eine Vorlesesoftware von Microsoft, kriegt(e? – haben sie den Bug inzischen gefixt?) es nicht auf die Reihe, bei dieser in HTML vorgesehenen Variante das Label dem Eingabefeld zuzuweisen. Deshalb besser, auch wenn es auch laut Spec nicht nötig wäre, die Zuordnung über das for-Attribut herstellen.


  1. Kann ich dem input "datetime-local" so formatieren, das keine Sekunden oder gar Millisekunden angezeigt werden ? Nur Stunden und Minuten

Wenn Sekunden und Millisekunden 0 sind, werden sie nicht angezeigt.

Und ganz BTW: du plenkst. Anders als im Französischen steht im Deutschen wie in den meisten Sprachen kein Leerzeichen vorm Fragezeichen.

🖖 Live long and prosper

--
In our chants of “ICE out now”
Our city’s heart and soul persists
Through broken glass and bloody tears
On the streets of Minneapolis

— Bruce Springsteen, Streets of Minneapolis
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen