Auf dieser Seite

Das JavaScript-Objekt „Date“

Das QML-Date-Objekt erweitert das JS-Date-Objekt um lokalisierungsbezogene Funktionen.

Funktionen, die ein Argument vom Typ „ format “ akzeptieren, nehmen entweder die Aufzählungswerte „Locale.LongFormat“, „Locale.ShortFormat“ und „Locale.NarrowFormat“ oder eine Zeichenkette entgegen, die das Format angibt.

Die Form der unterstützten Formatzeichenfolgen entspricht der Beschreibung in der Dokumentation zu QDate::toString(), QTime::toString() und QDateTime::toString().

Ist das Datum ungültig, wird eine leere Zeichenfolge zurückgegeben.

Format-Enumerationswerte

Verwenden Sie die Aufzählungswerte, wenn Sie ein Format wünschen, das den Einstellungen der Sprachumgebung entspricht.

Locale.LongFormatLängeres Format
Locale.ShortFormatKürzeres Format
Locale.NarrowFormatIn diesem Zusammenhang identisch mit Locale.ShortFormat

Das Format, das die Aufzählungen darstellen, hängt von Ihrer Ländereinstellung ab, aber auch von der Methode, für die die Aufzählung verwendet wird.

Für die Ländereinstellung „ en_US “ werden beispielsweise folgende Formatzeichenfolgen verwendet:

FunktionLocale-EnumerationFormatzeichenfolge
fromLocaleDateString, toLocaleDateStringLocale.LongFormatdddd, MMMM d, yyyy
fromLocaleDateString, toLocaleDateStringLocale.ShortFormatM/d/yy
fromLocaleTimeString, toLocaleTimeStringLocale.LongFormath:mm:ss AP t
fromLocaleTimeString, toLocaleTimeStringLocale.ShortFormath:mm AP
fromLocaleString, toLocaleStringLocale.LongFormatdddd, MMMM d, yyyy h:mm:ss AP t
fromLocaleString, toLocaleStringLocale.ShortFormatM/d/yy h:mm AP

Weitere Hinweise

Die Verwendung der lokalisierungsabhängigen Funktionen zur Formatierung von Datums- oder Zeitangaben kann aufgrund von Unstimmigkeiten in den Spezifikationen zwischen Qt und JS zu falsch formatierten Zeitangaben führen. ECMA-262 legt fest, dass historische Datumsangaben so interpretiert werden sollen, dass die aktuellen Regeln für die Sommerzeit auf vergangene Jahre hochgerechnet werden, während Qt historische Daten (sofern verfügbar) verwendet, um zu bestimmen, ob an einem bestimmten Datum Sommerzeit galt. Daher kann die Erstellung eines Date-Werts in JS und dessen Konvertierung in eine Zeichenkette mithilfe der lokalisierungsabhängigen Funktionen zu einem um eine Stunde falschen Ergebnis führen, wenn die Sommerzeit derzeit in Kraft ist, es zum angegebenen Zeitpunkt jedoch nicht war, oder umgekehrt.

Es gibt verschiedene Datumsformate mit unterschiedlichen Auslegungen negativer Jahre. In der allgemeinen Sprache gibt es kein Jahr 0. Das Jahr nach 1 v. Chr. ist 1 n. Chr. Diese Auslegung spiegelt sich wider, wenn Datumsangaben in einem der nicht durch ECMAScript standardisierten Formate ausgegeben oder geparst werden. Das sind: toString(), toLocaleString(), toUTCString() und ähnliche Funktionen. ECMAScript standardisiert ein Format: ISO 8601. Dieses Format erhalten Sie, wenn Sie toISOString() aufrufen. Dieses Format beinhaltet ein Jahr 0, das in anderen Formaten 1 v. Chr. entspricht. Daher erhalten Sie unterschiedliche Jahresangaben, wenn Sie negative Datumsangaben mit toISOString() und toString() ausgeben.

Bei der Festlegung des Jahres mithilfe des Date-Konstruktors oder von `set(UTC)FullYear()` wird die durch ISO 8601 festgelegte Konvention verwendet, und 0 ist ein gültiges Jahr. Das bedeutet, dass negative Jahre, die mit dem Konstruktor oder `set(UTC)FullYear()` festgelegt werden, nullbasiert sind und somit um ein Jahr gegenüber dem verschoben sind, was mit `toString()` und ähnlichen Methoden ausgegeben wird. Das Parsen der Ausgabe einer der to*String()-Methoden liefert denselben Datumswert, von dem aus Sie die Ausgabe erstellt haben. Date.parse() erkennt die verschiedenen Formate und deren Konventionen hinsichtlich der Existenz des Jahres 0.

Beachten Sie, dass sich all dies von dem unterscheidet, was Sie in anderen JavaScript-Implementierungen erhalten, die das Jahr 0 in der Regel in allen Zeichenfolgen-Darstellungen als gültig behandeln. Da die Datumsformate im ECMAScript-Standard „implementierungsabhängig“ sind, ist dies jedoch weiterhin gültig.

string Date::toLocaleString(locale, format)

Konvertiert das Datum in eine Zeichenkette, die das Datum und die Uhrzeit enthält und für die angegebene „ locale “ in der angegebenen „ format “ geeignet ist.

Wenn „ format “ nicht angegeben ist, wird „ Locale.LongFormat “ verwendet.

Wird „ locale “ nicht angegeben, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt das aktuelle Datum und die aktuelle Uhrzeit, formatiert für die deutsche Locale:

import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleString(Qt.locale("de_DE"))
}

string Date::toLocaleDateString(locale, format)

Konvertiert das Datum in eine Zeichenkette, die das für die angegebene „ locale “ geeignete Datum in der angegebenen „ format “ enthält.

Wird „ format “ nicht angegeben, wird „ Locale.LongFormat “ verwendet.

Wird „ locale “ nicht angegeben, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt das aktuelle Datum, formatiert für die deutsche Locale:

import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleDateString(Qt.locale("de_DE"))
}

string Date::toLocaleTimeString(locale, format)

Konvertiert das Datum in eine Zeichenkette, die die für die angegebene „ locale “ in der angegebenen „ format “ geeignete Zeitangabe enthält.

Wird „ format “ nicht angegeben, wird „ Locale.LongFormat “ verwendet.

Wird „ locale “ nicht angegeben, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt die aktuelle Uhrzeit, formatiert für die deutsche Locale:

import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleTimeString(Qt.locale("de_DE"))
}

string Date::fromLocaleString(locale, dateTimeString, format)

Konvertiert die Datums- und Zeitzeichenfolge ` dateTimeString ` mithilfe von ` locale ` und ` format` in ein `Date `-Objekt.

Wenn „ format “ nicht angegeben ist, wird „ Locale.LongFormat “ verwendet.

Wenn locale nicht angegeben ist, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt, wie ein Datums- und Zeitwert aus einer Datums- und Zeitzeichenfolge in einem bestimmten Format unter Verwendung der Standard-Locale geparst wird:

import QtQml 2.0

QtObject {
    property var locale: Qt.locale()
    property string dateTimeString: "Tue 2013-09-17 10:56:06"

    Component.onCompleted: {
        print(Date.fromLocaleString(locale, dateTimeString, "ddd yyyy-MM-dd hh:mm:ss"));
    }
}

string Date::fromLocaleDateString(locale, dateString, format)

Konvertiert die Datumszeichenfolge „ dateString “ mithilfe von „ locale “ und „ format “ in ein Date- Objekt.

Wenn „ format “ nicht angegeben wird, wird „ Locale.LongFormat “ verwendet.

Wenn locale nicht angegeben ist, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt, wie das aktuelle Datum zunächst unter Verwendung der Standard-Locale und des Standardformats als Datumszeichenfolge formatiert und anschließend auf dieselbe Weise wieder geparst wird:

import QtQml 2.0

QtObject {
    property var locale: Qt.locale()
    property date currentDate: new Date()
    property string dateString

    Component.onCompleted: {
        dateString = currentDate.toLocaleDateString();
        print(Date.fromLocaleDateString(dateString));
    }
}

string Date::fromLocaleTimeString(locale, timeString, format)

Konvertiert die Zeitzeichenfolge ` timeString ` mithilfe von ` locale ` und ` format` in ein `Date `-Objekt.

Wenn „ format “ nicht angegeben wird, wird „ Locale.LongFormat “ verwendet.

Wenn locale nicht angegeben ist, wird die Standard-Locale verwendet.

Das folgende Beispiel zeigt, wie die aktuelle Uhrzeit zunächst unter Verwendung der Standard-Locale und eines kurzen Formats als Zeitzeichenfolge formatiert und anschließend auf dieselbe Weise wieder geparst wird:

import QtQml 2.2

QtObject {
    property var locale: Qt.locale()
    property date currentTime: new Date()
    property string timeString

    Component.onCompleted: {
        timeString = currentTime.toLocaleTimeString(locale, Locale.ShortFormat);
        print(Date.fromLocaleTimeString(locale, timeString, Locale.ShortFormat));
    }
}

string Date::timeZoneUpdated()

Teilt der JS-Engine mit, dass die Zeitzone des Systems geändert wurde, was für die korrekte Bearbeitung von Datums- und Zeitdaten erforderlich ist.

JS speichert Date-Objekte in UTC-Zeit; jeder Zugriff auf und von Date-Komponenten in Ortszeit erfolgt unter Berücksichtigung des aktuellen Offsets gegenüber UTC. Wenn sich der aktuelle Offset aufgrund einer Aktualisierung der Zeitzone ändert, muss die JS-Engine darüber informiert werden, damit sie den Offset neu berechnen kann.

Diese Funktion sollte aufgerufen werden, nachdem die Zeitzone des Systems aktualisiert wurde.

Beispielsweise würde eine Anwendung, die die Zeitzone ändert, `timeZoneUpdated()` nach dem Festlegen der neuen Zeitzone aufrufen:

property string selectedTimeZone

onSelectedTimeZoneChanged: {
    MyFunctions.setSystemTimeZone(selectedTimeZone)
    Date.timeZoneUpdated()
}

Siehe auch Locale.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.