HTMLInputElement: valueAsDate-Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

Die valueAsDate-Eigenschaft des HTMLInputElement-Interfaces repräsentiert den aktuellen Wert des <input>-Elements als ein Date oder null, wenn eine Umwandlung nicht möglich ist.

Diese Eigenschaft kann auch direkt gesetzt werden, zum Beispiel um ein Standarddatum basierend auf einer Bedingung festzulegen. Wenn der bereitgestellte Wert weder null noch ein Date-Objekt ist, wird ein TypeError ausgelöst. Wenn der bereitgestellte Wert null oder ein ungültiges Datum ist, wird der Eingabewert auf den leeren String gesetzt.

Diese Eigenschaft gibt immer null zurück, wenn sie auf ein Eingabeelement angewendet wird, das nicht auf Datum oder Zeit basiert. Wird diese Eigenschaft auf einem solchen Eingabeelement gesetzt, wird ein InvalidStateError DOMException ausgelöst.

Wert

Ein Date-Objekt oder null, wenn eine Umwandlung unmöglich ist. Das zurückgegebene Datum sollte immer als UTC-Zeit interpretiert werden—zum Beispiel mit Methoden wie getUTCDate() anstelle von getDate(). Wenn Sie nicht vorsichtig sind, kann das Ergebnis um 1 abweichen—zum Beispiel, wenn der Benutzer in einer negativen UTC-Zeitzone lebt (zum Beispiel in den USA), wird das Datum als lokales Datum interpretiert, was zum vorherigen Tag führt, als der Benutzer ausgewählt hat.

Die Eingabetypen month, date und week geben ein UTC-Datum zurück, das den ersten Moment des eingegebenen Zeitraums darstellt—d.h. sie sind immer Mitternacht in UTC. Für month ist das Datum der erste Tag des Monats. Für week ist das Datum der Montag der Woche. Der Eingabetyp time hat das Datum immer auf 1970-01-01 gesetzt.

Der Eingabetyp datetime-local unterstützt die valueAsDate-Eigenschaft nicht, da er ein Datum und eine Uhrzeit in der lokalen Zeitzone (eine wanduhrzeit) repräsentiert, wohingegen Date-Objekte einen absoluten Zeitpunkt repräsentieren. Allerdings bieten einige Browser möglicherweise eine nicht-standardisierte Implementierung. WHATWG arbeitet daran, die Temporal API mit den Datum-/Zeiteingaben zu integrieren, um diesen Anwendungsfall zu berücksichtigen.

Beispiele

Abrufen eines Datumswertes

Dieses Beispiel zeigt den Zugriff auf die valueAsDate-Eigenschaft auf einem <input> des Typs week.

HTML

Wir fügen ein <input> des Typs week ein:

html
<label for="date">Pick a date and time:</label>

<input name="date" id="date" type="week" />

<pre id="log"></pre>

JavaScript

Wenn kein Datum oder keine Zeit ausgewählt ist, ergibt die leere Eingabe null. Jedes Mal, wenn eine Auswahl getroffen wird, wird ein change-Ereignis ausgelöst, das den Inhalt des <pre> aktualisiert, der den HTMLInputElement.value des Formularelements im Vergleich zu diesem Wert als Datum anzeigt.

js
const logElement = document.getElementById("log");
const inputElement = document.getElementById("date");

logElement.innerText = `Initial value: ${inputElement.valueAsDate}`;

inputElement.addEventListener("change", () => {
  logElement.innerText = `${inputElement.value} resolves to ${inputElement.valueAsDate}`;
});

Ergebnisse

Verwenden von Datumsmethoden

Dieses Beispiel zeigt die Anwendung von Date-Methoden direkt auf die valueAsDate-Eigenschaft eines <input> des Typs date.

HTML

Wir fügen ein <input> des Typs date ein:

html
<label for="date2">Pick a date:</label>

<input name="date2" id="date2" type="date" />

<pre id="log"></pre>

JavaScript

Wenn kein Datum ausgewählt ist, ergibt die leere Eingabe null. Jedes Mal, wenn eine Auswahl getroffen wird, wird ein change-Ereignis ausgelöst. Wir füllen dann das Log mit dem gewählten Datum, formatiert mit der toLocaleDateString()-Methode des Date-Objekts.

js
const logElement = document.getElementById("log");
const inputElement = document.getElementById("date2");
const options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric",
};

logElement.innerText = `Initial value: ${inputElement.valueAsDate}`;

inputElement.addEventListener("change", () => {
  if (inputElement.valueAsDate !== null) {
    logElement.innerText = `You selected ${inputElement.valueAsDate.toLocaleDateString("en-US", options)}`;
  } else {
    logElement.innerText = `${inputElement.value} resolves to ${inputElement.valueAsDate}`;
  }
});

Ergebnisse

Das Datum kann aufgrund Ihrer lokalen Zeitzone um einen Tag abweichen.

Spezifikationen

Specification
HTML
# dom-input-valueasdate-dev

Browser-Kompatibilität

Siehe auch