A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Temporal below:

Temporal - JavaScript | MDN

Temporal

Limited availability

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Das Temporal Objekt ermöglicht das Verwenden von Datum und Zeit in verschiedenen Szenarien, einschließlich integrierter Zeitzonen- und Kalenderdarstellung, Umwandlungen der Uhrzeit, Arithmetik, Formatierungen und mehr. Es ist als vollständiger Ersatz für das Date-Objekt konzipiert.

Beschreibung

Im Gegensatz zu den meisten globalen Objekten ist Temporal kein Konstruktor. Sie können es nicht mit dem new Operator verwenden oder das Temporal-Objekt als Funktion aufrufen. Alle Eigenschaften und Methoden von Temporal sind statisch (ähnlich wie das Math-Objekt).

Temporal verfügt über eine komplexe und leistungsfähige API. Es bietet über 200 Dienstmethoden über mehrere Klassen an, sodass es sehr komplex erscheinen kann. Wir geben einen Überblick darüber, wie diese APIs miteinander in Beziehung stehen.

Hintergrund und Konzepte

JavaScript hat das Date-Objekt seit seinen Anfängen zur Verwaltung von Datum und Zeit. Allerdings basiert die Date-API auf der schlecht gestalteten java.util.Date-Klasse aus Java, die in den frühen 2010er Jahren ersetzt wurde; aufgrund des JavaScript-Ziels der Rückwärtskompatibilität bleibt Date jedoch in der Sprache bestehen.

Die wichtigste Lektion ist, dass die Handhabung von Daten komplex ist. Die meisten Probleme von Date können durch Hinzufügen weiterer Methoden behoben werden, aber ein grundlegender Konstruktionsfehler bleibt: Es werden so viele Methoden auf demselben Objekt bereitgestellt, dass Entwickler oft verwirrt sind, was sie verwenden sollen, was zu unerwarteten Fallen führt. Eine gut gestaltete API muss nicht nur mehr tun, sondern auch weniger auf jeder Abstraktionsebene, da die Vermeidung von Fehlgebrauch genauso wichtig ist wie die Ermöglichung von Anwendungsfällen.

Date-Objekte haben gleichzeitig zwei Rollen:

Zeitzonen sind eine häufige Quelle für datenbezogene Fehler. Wenn Sie über das Modell "Kombination von Komponenten" mit einem Date interagieren, kann die Zeit nur in zwei Zeitzonen angegeben werden: UTC und lokal (Gerät), und es gibt keine Möglichkeit, eine beliebige Zeitzone anzugeben. Es fehlt auch das Konzept der "keine Zeitzone": Dies wird als Kalenderdatum (für Daten) oder Wanduhrzeit (für Zeiten) bezeichnet, die eine Zeit ist, die Sie "von einem Kalender oder einer Uhr ablesen". Zum Beispiel, wenn Sie einen täglichen Wecker stellen, möchten Sie ihn auf "8:00 Uhr" stellen, unabhängig davon, ob es Sommerzeit ist, ob Sie in eine andere Zeitzone gereist sind usw.

Ein weiteres Merkmal, das Date fehlt, ist ein Kalendersystem. Die meisten Menschen sind mit dem gregorianischen Kalender vertraut, bei dem es zwei Epochen gibt, v. Chr. und n. Chr.; es gibt 12 Monate; jeder Monat hat eine unterschiedliche Anzahl von Tagen; es gibt alle 4 Jahre ein Schaltjahr usw. Einige dieser Konzepte gelten jedoch möglicherweise nicht, wenn Sie mit einem anderen Kalendersystem arbeiten, wie dem hebräischen Kalender, dem chinesischen Kalender, dem japanischen Kalender usw. Mit Date können Sie nur mit dem Modell des gregorianischen Kalenders arbeiten.

Es gibt viele andere unerwünschte Hinterlassenschaften von Date, wie dass alle Set-Methoden mutierend sind (was oft unerwünschte Nebenwirkungen verursacht), das Datum-Uhrzeit-String-Format, das auf konsistente Weise schwer zu analysieren ist usw. Am Ende besteht die beste Lösung darin, eine neue API von Grund auf zu erstellen, was Temporal ist.

API-Übersicht

Temporal ist ein Namensraum, wie Intl. Es enthält mehrere Klassen und Namespaces, die jeweils einen bestimmten Aspekt der Verwaltung von Datum und Zeit behandeln sollen. Die Klassen können wie folgt gruppiert werden:

Darüber hinaus gibt es noch einen weiteren Dienst-Namespace, Temporal.Now, der Methoden zum Abrufen der aktuellen Zeit in verschiedenen Formaten bereitstellt.

Gemeinsame Klassenoberfläche

Es gibt viele Klassen im Temporal-Namensraum, aber sie teilen viele ähnliche Methoden. Die folgende Tabelle listet alle Methoden jeder Klasse auf (außer Konvertierungsmethoden):

Die folgende Tabelle fasst zusammen, welche Eigenschaften in jeder Klasse verfügbar sind, und gibt Ihnen einen Eindruck davon, welche Informationen jede Klasse darstellen kann.

Konvertierung zwischen Klassen

Die folgende Tabelle fasst alle Konvertierungsmethoden zusammen, die in jeder Klasse existieren.

Mit diesen Tabellen sollten Sie eine grundlegende Vorstellung davon haben, wie Sie die Temporal-API navigieren können.

Kalender

Ein Kalender ist ein Mittel, um Tage zu organisieren, typischerweise in Perioden wie Wochen, Monate, Jahre und Epochen. Der größte Teil der Welt verwendet den gregorianischen Kalender, aber es gibt viele andere Kalender, die in religiösen und kulturellen Kontexten verwendet werden. Standardmäßig verwenden alle kalenderbezogenen Temporal-Objekte das ISO 8601-Kalendersystem, das auf dem gregorianischen Kalender basiert und zusätzliche Wochenregeln festlegt. Intl.supportedValuesOf() listet die meisten Kalender auf, die vermutlich von Browsern unterstützt werden. Hier bieten wir einen kurzen Überblick darüber, wie Kalendersysteme gebildet werden, um Ihnen zu helfen, welche Faktoren zwischen Kalendern variieren können.

Es gibt drei wesentliche periodische Ereignisse auf der Erde: Die Rotation um die Sonne (365,242 Tage für eine Umdrehung), die Rotation des Mondes um die Erde (29,53 Tage von einem Neumond zum nächsten) und die Rotation um ihre Achse (24 Stunden von Sonnenaufgang zu Sonnenaufgang). Jede Kultur hat das gleiche Maß für einen "Tag", nämlich 24 Stunden. Gelegentliche Änderungen wie die Sommerzeit sind nicht Teil des Kalenders, sondern Teil der Zeitzonen-Informationen.

In Temporal wird jedes Datum unter einem Kalendersystem eindeutig durch drei Komponenten identifiziert: year, month und day. Während year normalerweise eine positive ganze Zahl ist, kann sie auch null oder negativ sein und monoton mit der Zeit zunehmen. Das Jahr 1 (oder 0, wenn es existiert) ist als Kalenderepoche bekannt und ist für jeden Kalender willkürlich. month ist eine positive Ganzzahl, die sich jedes Mal um 1 erhöht und bei 1 beginnt und bei date.monthsInYear endet, dann zurück auf 1 zurückgesetzt wird, wenn das Jahr fortschreitet. day ist ebenfalls eine positive Ganzzahl, kann aber nicht bei 1 beginnen oder sich jedes Mal um 1 erhöhen, da politische Änderungen Tage überspringen oder wiederholen können. Im Allgemeinen erhöht sich day jedoch monoton und wird zurückgesetzt, wenn der Monat fortschreitet.

Zusätzlich zu year kann ein Jahr auch durch die Kombination von era und eraYear eindeutig identifiziert werden, für Kalender, die Epochen verwenden. Zum Beispiel verwendet der gregorianische Kalender die Epochen "CE" (Common Era) und "BCE" (Before Common Era), und das Jahr -1 ist dasselbe wie { era: "bce", eraYear: 2 } (Hinweis: dass Jahr 0 existiert immer für alle Kalender; für den gregorianischen Kalender entspricht es 1 v. Chr. aufgrund der astronomischen Jahrzählung). era ist eine Kleinschreibung und eraYear ist eine willkürliche Ganzzahl, die null oder negativ sein oder sogar mit der Zeit abnehmen kann (normalerweise für die älteste Epoche).

Hinweis: Verwenden Sie immer era und eraYear als Paar; verwenden Sie nicht eine Eigenschaft ohne die andere. Um Konflikte zu vermeiden, kombinieren Sie nicht year und era/eraYear, wenn Sie ein Jahr bezeichnen. Wählen Sie eine Jahresdarstellung und verwenden Sie sie konsequent.

Hüten Sie sich vor den folgenden falschen Annahmen über Jahre:

Zusätzlich zu month kann ein Monat in einem Jahr auch durch den monthCode eindeutig identifiziert werden. monthCode ordnet sich normalerweise dem Namen des Monats zu, während month dies nicht tut. Zum Beispiel, im Fall von lunisolar Kalendern, werden zwei Monate mit demselben monthCode, bei denen einer zu einem Schaltjahr gehört und der anderer nicht, unterschiedliche month-Werte haben, wenn sie nach dem Schaltmonat auftreten, aufgrund der Einfügung eines zusätzlichen Monats.

Hinweis: Um Konflikte zu vermeiden, kombinieren Sie nicht month und monthCode, wenn Sie einen Monat bezeichnen. Wählen Sie eine Monatsdarstellung und verwenden Sie sie konsequent. month ist nützlicher, wenn Sie die Reihenfolge der Monate in einem Jahr benötigen (z. B. beim Durchlaufen der Monate), während monthCode nützlicher ist, wenn Sie den Namen des Monats benötigen (z. B. beim Speichern von Geburtstagen).

Hüten Sie sich vor den folgenden falschen Annahmen über Monate:

Zusätzlich zu day (welches ein monatlicher Index ist) kann ein Tag in einem Jahr auch durch dayOfYear eindeutig identifiziert werden. dayOfYear ist eine positive Ganzzahl, die sich jedes Mal um 1 erhöht, beginnend bei 1 und endend bei date.daysInYear.

Das Konzept einer "Woche" ist mit keinem astronomischen Ereignis verbunden, sondern ist ein kulturelles Konstrukt. Während die häufigste Länge 7 Tage beträgt, können Wochen auch 4, 5, 6, 8 oder mehr Tage haben - oder sogar keine fixen Tage. Verwenden Sie die daysInWeek, um die spezifische Anzahl von Tagen der Woche eines Datums zu erhalten. Temporal identifiziert Wochen durch die Kombination von weekOfYear und yearOfWeek. weekOfYear ist eine positive Ganzzahl, die sich jedes Mal um 1 erhöht, beginnend bei 1, dann zurück auf 1 gesetzt wird, wenn das Jahr fortschreitet. yearOfWeek ist im Allgemeinen dasselbe wie year, kann jedoch am Anfang oder Ende jedes Jahres unterschiedlich sein, da eine Woche zwei Jahre überschreiten kann und yearOfWeek basierend auf den Regeln des Kalenders eines der beiden Jahre auswählt.

Hinweis: Verwenden Sie stets weekOfYear und yearOfWeek als Paar; verwenden Sie nicht weekOfYear und year.

Hüten Sie sich vor den folgenden falschen Annahmen über Wochen:

RFC 9557-Format

Alle Temporal-Klassen können serialisiert und deserialisiert werden, indem das im RFC 9557 spezifizierte Format verwendet wird, das auf ISO 8601 / RFC 3339 basiert. Das Format, in seiner vollständigen Form, ist wie folgt (Leerzeichen sind nur für die Lesbarkeit und sollten im tatsächlichen String nicht vorhanden sein):

YYYY-MM-DD T HH:mm:ss.sssssssss Z/±HH:mm [time_zone_id] [u-ca=calendar_id]

Verschiedene Klassen haben unterschiedliche Anforderungen an die Anwesenheit jeder Komponente, also finden Sie einen Abschnitt mit dem Titel "RFC 9557-Format" in der Dokumentation jeder Klasse, der das von dieser Klasse erkannte Format spezifiziert.

Dies ist dem Datum-Uhrzeit-String-Format sehr ähnlich, das von Date verwendet wird, das ebenfalls auf ISO 8601 basiert. Die Hauptneuheit ist die Möglichkeit, Mikro- und Nanosekundenkomponenten anzugeben sowie Zeitzone und Kalendersystem anzugeben.

Darstellbare Daten

Alle Temporal-Objekte, die ein spezifisches Kalenderdatum darstellen, legen eine ähnliche Begrenzung für den Bereich darstellbarer Daten auf, nämlich ±108 Tage (einschließlich) von der Unix-Epoche oder den Bereich von Momenten von -271821-04-20T00:00:00 bis +275760-09-13T00:00:00. Dies entspricht demselben Bereich wie bei gültigen Daten. Genauer:

Die Temporal-Objekte verweigern es, eine Instanz zu erstellen, die ein Datum/Zeit jenseits dieses Limits darstellt. Dies schließt ein:

Statische Eigenschaften
Temporal.Duration Experimentell

Repräsentiert einen Unterschied zwischen zwei Zeitpunkten, der in Arithmetik von Datum/Zeit verwendet werden kann. Es wird grundlegend als Kombination von Jahren, Monaten, Wochen, Tagen, Stunden, Minuten, Sekunden, Millisekunden, Mikrosekunden und Nanosekundenwerten dargestellt.

Temporal.Instant Experimentell

Repräsentiert einen einzigartigen Zeitpunkt mit Nanosekunden-Genauigkeit. Es wird grundlegend als die Anzahl der Nanosekunden seit der Unix-Epoche (Mitternacht zu Beginn des 1. Januar 1970, UTC) dargestellt, ohne Zeitzone oder Kalendersystem.

Temporal.Now Experimentell

Bietet Methoden zum Abrufen der aktuellen Zeit in verschiedenen Formaten.

Temporal.PlainDate Experimentell

Repräsentiert ein Kalendarium (ein Datum ohne Zeit oder Zeitzone); zum Beispiel ein Ereignis in einem Kalender, das den ganzen Tag über unabhängig von der Zeitzone stattfindet. Es wird grundlegend als ISO 8601-Kalendarium mit Jahr-, Monat- und Tagesfeldern und einem assoziierten Kalendersystem dargestellt.

Temporal.PlainDateTime Experimentell

Repräsentiert ein Datum (Kalendarium) und eine Zeit (Wanduhrzeit) ohne Zeitzone. Es wird grundlegend als Kombination eines Datums (mit einem assoziierten Kalendersystem) und einer Zeit dargestellt.

Temporal.PlainMonthDay Experimentell

Repräsentiert den Monat und Tag eines Kalenderdatums ohne Jahr oder Zeitzone; zum Beispiel ein jährlich wiederkehrendes Ereignis, das den ganzen Tag über stattfindet. Es wird grundlegend als ISO 8601-Kalendarium mit Jahr-, Monat- und Tagesfeldern und einem assoziierten Kalendersystem dargestellt. Das Jahr wird verwendet, um den Monat-Tag in nicht-ISO-Kalendersystemen zu unterscheiden.

Temporal.PlainTime Experimentell

Repräsentiert eine Zeit ohne Datum oder Zeitzone; zum Beispiel ein sich wiederholendes Ereignis, das jeden Tag zur gleichen Zeit stattfindet. Es wird grundlegend als Kombination von Stunde-, Minute-, Sekunde-, Millisekunde-, Mikrosekunde- und Nanosekundenwerten dargestellt.

Temporal.PlainYearMonth Experimentell

Repräsentiert das Jahr und den Monat eines Kalenderdatums ohne Tag oder Zeitzone; zum Beispiel ein Ereignis auf einem Kalender, das während des ganzen Monats stattfindet. Es wird grundlegend als ISO 8601-Kalendarium mit Jahr-, Monat- und Tagesfeldern und einem assoziierten Kalendersystem dargestellt. Der Tag wird verwendet, um den Jahr-Monat in nicht-ISO-Kalendersystemen zu unterscheiden.

Temporal.ZonedDateTime Experimentell

Repräsentiert ein Datum und Uhrzeit mit Zeitzone. Es wird grundlegend als Kombination eines Moment, einer Zeitzone und eines Kalendersystems dargestellt.

Temporal[Symbol.toStringTag]

Der Initialwert der [Symbol.toStringTag]-Eigenschaft ist der String "Temporal". Diese Eigenschaft wird in Object.prototype.toString() verwendet.

Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4