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-Objekt oder null, wenn eine Konvertierung nicht möglich ist.

Diese Eigenschaft kann auch direkt gesetzt werden, um beispielsweise 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 einem Eingabefeld zugreift, das nicht datums- oder zeitbasiert ist. Beim Setzen dieser Eigenschaft auf einem solchen Eingabefeld wird ein InvalidStateError-DOMException ausgelöst.

Wert

Ein Date-Objekt oder null, wenn eine Konvertierung unmöglich ist. Das zurückgegebene Datum sollte immer als UTC-Zeit interpretiert werden – zum Beispiel, indem Methoden wie getUTCDate() anstelle von getDate() verwendet werden. Wenn Sie nicht vorsichtig sind, kann das Ergebnis um einen Tag abweichen – zum Beispiel, wenn der Benutzer in einer negativen UTC-Zeitverschiebung lebt (zum Beispiel in den USA), dann führt die Interpretation des Datums als lokales Datum zum vorherigen Tag von dem, was 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 – das heißt, sie sind immer Mitternacht in UTC. Bei month ist das Datum der erste Tag des Monats. Bei 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) darstellt, während Date-Objekte einen absoluten Zeitpunkt repräsentieren. Einige Browser bieten jedoch möglicherweise eine nicht standardmäßige Implementierung. WHATWG arbeitet daran, die Temporal-API mit den Datums-/Zeiteingaben zu integrieren, um diesen Anwendungsfall zu berücksichtigen.

Beispiele

Abrufen eines Datumswerts

Dieses Beispiel demonstriert den Zugriff auf die valueAsDate-Eigenschaft eines <input> vom Typ week.

HTML

Wir fügen ein <input> vom Typ 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 Uhrzeit ausgewählt ist, ergibt das leere Eingabefeld null. Jedes Mal, wenn eine Auswahl getroffen wird, wird ein change-Ereignis ausgelöst, das den <pre>-Inhalt aktualisiert und 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 Date-Methoden

Dieses Beispiel zeigt die direkte Anwendung von Date-Methoden auf die valueAsDate-Eigenschaft eines <input> vom Typ date.

HTML

Wir fügen ein <input> vom Typ 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 der leere String null. Jedes Mal, wenn eine Auswahl getroffen wird, wird ein change-Ereignis ausgelöst. Wir füllen dann das Protokoll mit dem ausgewählten Datum, formatiert mithilfe 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

BCD tables only load in the browser

Siehe auch