Date Formatter
Format any date in 12 patterns including ISO 8601, US, EU, RFC 2822, Unix timestamp and relative.
Geprüft von Aygul Dovletova · Zuletzt geprüft
So verwendest du den Datumsformatierer
- Wähle ein Datum und eine Uhrzeit in der Datums-/Uhrzeit-Auswahl oben. Die Auswahl ist standardmäßig auf "jetzt" gesetzt, damit du alle Formate sofort befüllt sehen kannst.
- Sieh dir die 12-Zeilen-Tabelle der Ausgaben an: ISO 8601, RFC 2822, US
MM/TT/JJJJ, EUTT/MM/JJJJundTT.MM.JJJJ, langer lesbarer Text ("Montag, 1. Januar 2024"), kurz ("1. Jan. 2024"), Unix-Zeitstempel in Sekunden, Unix-Zeitstempel in Millisekunden, relativ ("vor 3 Tagen") und gebietsschemaspezifische Varianten. - Klicke die Kopier-Schaltfläche neben einer beliebigen Zeile, um diese Zeichenkette in deine Zwischenablage zu übernehmen.
- Ändere die Eingabe, um jede Zeile auf einmal zu aktualisieren - der Formatierer ist reaktiv.
Was passiert, wenn du das Datum änderst
Die Komponente nimmt deine Datumszeichenkette, analysiert sie in ein JavaScript-Date-Objekt und leitet es dann durch zwölf Formatierer gleichzeitig. Die meisten Zeilen verwenden Intl.DateTimeFormat mit verschiedenen options-Objekten - diese API ist der einzig zuverlässige Ort im Browser, wo Gebietsschema, Zeitzone und Kalenderregeln tatsächlich korrekt funktionieren. Die ISO-8601-Zeile stammt von toISOString(), die RFC-3339-konform ist. Die RFC-2822-Zeile stammt von toUTCString(), das das von E-Mail- und HTTP-Date-Headern spezifizierte Format ist. Die Unix-Zeitstempel-Zeilen verwenden direkt Math.floor(date.getTime() / 1000) und date.getTime(). Die "relative"-Zeile verwendet Intl.RelativeTimeFormat, das die größte Einheit auswählt, die einen lesbaren Satz ergibt ("vor 2 Monaten" statt "vor 61 Tagen") - ein Detail, das die meisten handgeschriebenen Lösungen falsch machen.
Reale Situationen, in denen das richtige Format wichtig ist
- Einen Zeitstempel in eine Protokollzeile, eine Commit-Nachricht oder einen Dateinamen einfügen - ISO 8601 ist die einzige Wahl, die als Zeichenkette korrekt sortiert.
- Das Datum in eine E-Mail, Rechnung oder ein rechtliches Dokument schreiben, wo die Region des Lesers TT/MM oder MM/TT erwartet; sich beim Vertrag mit einer Zweideutigkeit zwischen dem 5. März und dem 3. Mai zu vertun, hat echte Rechtsstreitigkeiten verursacht.
- Einen HTTP-Last-Modified-Header oder ein Cookie-
Expires-Attribut erstellen, beide erfordern das RFC-2822/IMF-fixdate-Format. - Einen Wert in eine Datenbank oder API übergeben, die
BIGINT-Unix-Millisekunden speichert. - Einen CSV-Export für Excel befüllen, wo ein bloßes ISO-Datum zu "42736" seriellen Zahlen verstümmelt wird, sofern es nicht in Anführungszeichen gesetzt ist.
- Eine "vor 3 Stunden gepostet"-Zeile in einem Kommentar-Thread rendern, ohne Moment.js oder date-fns einzubinden.
Mehrdeutigkeiten, die der Formatierer nicht für dich lösen kann
- 01/02/2024 ist der 2. Januar in den USA, der 1. Februar in Großbritannien und der 1. Februar mit Punkten in Deutschland. Wenn das Ziel mehrdeutig ist, wähle ISO 8601 -
2024-02-01hat überall auf der Welt genau eine Interpretation. - Zweistellige Jahre (
01/02/24) sind ein Lesbarkeitsrisiko und ein Y2K-artiger Fehlermagnet. Weder MM/TT/JJ noch TT/MM/JJ wird aus diesem Grund hier angeboten. - Zeitzone impliziert vs. explizit. ISO 8601 mit einem abschließenden
Zist UTC; ohne Versatz ist es lokal; "1. Jan. 2024 12:00 Uhr" könnte jede der vierundzwanzig derzeit verwendeten Zonen sein (plus Indiens UTC+5:30, Nepals UTC+5:45 und Irans UTC+3:30). - Nicht-Gregorianische Kalender.
Intl.DateTimeFormatunterstütztcalendar: 'hebrew',islamic-umalqura,japanese,buddhistund mehr - dieses Werkzeug bleibt beim Gregorianischen, um die Ausgabetabelle überschaubar zu halten, aber der Browser kann die anderen, wenn du sie brauchst. - "Relativ" driftet mit der Zeit. "Vor 3 Tagen" ist morgen falsch. Kopiere die absolute Form, wenn du in ein Dokument einfügst.
Eine kurze Tour durch die Formate
ISO 8601 (erstmals 1988 veröffentlicht, aktuell ISO 8601-1:2019) ist der internationale Standard; RFC 3339 ist ein strengeres Profil für Internetprotokolle, insbesondere JSON-Schema-Datums-Zeiten und OpenAPI. RFC 2822 (durch RFC 5322 aktualisiert) definiert die "Mo., 01. Jan. 2024 12:00:00 GMT"-Form, die in E-Mail-Headern verwendet wird; HTTP verwendet ein eng verwandtes Format, das durch RFC 7231 als IMF-fixdate standardisiert wurde. Unix-Zeit stammt aus der ersten Edition von Unix im Jahr 1971 und zählt Sekunden seit 1970-01-01T00:00:00Z; sie ignoriert Schaltsekunden und kümmert sich nicht um Zeitzonen, weshalb Server und Datenbanken sie übernommen haben. US MM/TT/JJJJ ist ein Überbleibsel von handgeschriebenen Schecks; EU TT/MM/JJJJ spiegelt die gesprochene Reihenfolge wider ("der 5. Januar"); Deutsch TT.MM.JJJJ verwendet Punkte, weil DIN 5008 es so vorschreibt. Die Kenntnis deines Zielpublikums entscheidet die richtige Zeile.
Wann native APIs Bibliotheken schlagen
Jahrelang lautete die Standardantwort "Verwende einfach Moment.js." Moment ist jetzt Legacy (die Betreuer selbst empfehlen, davon wegzuwechseln) und fügt ~70 KB gzippt hinzu. date-fns ist tree-shakable, aber immer noch überdimensioniert für einmalige Formatierung. Day.js ist die moderne ~7-KB-Option mit einer Moment-ähnlichen API. Für die zwölf häufigen Formate, die dieses Werkzeug produziert, sind jedoch Intl.DateTimeFormat und Date-Methoden im Browser kostenlos, korrekt lokalisiert und werden vom TC39-Komitee gepflegt. Diese Seite überspringt die Abhängigkeit vollständig. Wo Bibliotheken noch glänzen: Parsen von losen Benutzereingaben ("nächsten Dienstag um 15 Uhr"), Differenzial-Kalender-Arithmetik ("füge 1 Geschäftsmonat hinzu") und zeitzonenbewusste Arithmetik, die einen einzelnen Sommerzeit-Übergang überdauert - der Temporal-Vorschlag (Stage 3 bei TC39) wird diese Fälle schließlich nativ abdecken, ist aber noch nicht in stabilen Browsern vorhanden.
Häufig gestellte Fragen
Warum endet die ISO-8601-Ausgabe mit einem Z?
Das abschließende Z ist die ISO-8601-Abkürzung für UTC ("Z" steht für "Zulu-Zeit" im militärischen Funkphabet, eine Konvention, die lange vor Computern existierte). Es bedeutet "Dieser Zeitstempel ist in UTC ausgedrückt, mit null Versatz." Eine Zeichenkette wie 2024-01-01T12:00:00+09:00 ist derselbe Zeitpunkt wie 2024-01-01T03:00:00Z. Die Z-Form ist das, was JavaScript toISOString() immer produziert, und das ist es, was RFC 3339 für den maschinellen Datenaustausch empfiehlt.
Ist der Unix-Zeitstempel in Sekunden oder Millisekunden?
Die Tabelle zeigt beides. Unix-Zeit in klassischer Form ist Sekunden seit 1970-01-01T00:00:00Z, was für jedes Datum innerhalb der nächsten Jahrhunderte 10 Stellen ergibt. JavaScript Date.getTime() gibt Millisekunden zurück (13 Stellen), weil die Sprache für Sub-Sekunden- Präzision ausgelegt wurde. Datenbanken tendieren dazu, Sekunden zu speichern (PostgreSQL EPOCH, Unix-Protokolldateien), während Java, JavaScript und die meisten modernen APIs standardmäßig Millisekunden verwenden. Überprüfe immer, was der Empfänger erwartet - die beiden zu verwechseln ist ein stiller Fehler, der alle Zeitstempel um den Faktor 1000 verzerrt.
Respektiert der Formatierer meine Zeitzone oder zeigt er UTC an?
Zeilen mit der Bezeichnung "lokal" verwenden deine Browser-Zeitzone, wie sie von Intl.DateTimeFormat().resolvedOptions().timeZone gemeldet wird, abgeleitet aus deinen Betriebssystemeinstellungen. Zeilen mit der Bezeichnung ISO oder RFC 2822 sind immer UTC. Die lange lesbare Zeile verwendet Ortszeit, weil das ist, was du laut sagen würdest ("Montag 15 Uhr", nicht "Montag 22:00 UTC"). Wenn du eine bestimmte Zielzone benötigst, die nicht deine eigene ist, verwende stattdessen den Zeitzonenkonverter.
Was bedeutet "RFC 2822" eigentlich und wo würde ich es verwenden?
RFC 2822 (später durch RFC 5322 aktualisiert) standardisiert das Internet-Nachrichtenformat - im Wesentlichen die Header einer E-Mail. Der Datums-Header sieht so aus: "Tue, 10 Sep 2024 14:30:00 +0000" mit einer Wochentagsabkürzung, Tag, Monatsname, 4-stelliges Jahr, 24-Stunden-Zeit und einem numerischen Versatz oder GMT. Dasselbe Format (mit einer Teilmenge erlaubter Versätze) wird für den HTTP-Date-Header, den Last-Modified-Header und das Set-Cookie-Expires-Attribut verwendet. Wenn du eines davon von Hand erstellst, ist das die Zeile zum Kopieren.
Warum gibt es kein "MM/TT/JJ" mit zweistelligem Jahr?
Weil zweistellige Jahre das weitverbreitetste schlechteste Datumsformat sind. Sie verursachten den gesamten Y2K-Sanierungsaufwand, sie sind weiterhin rechtlich mehrdeutig (ist "01/02/25" 1925 oder 2025?) und sie besiegen die String-Sortierung. Jede Ausgabezeile hier verwendet ein 4-stelliges Jahr. Wenn ein Legacy-System dich zwingt, zweistellige Jahre zu produzieren, nimm die 4-stellige Ausgabe und schneide die letzten zwei Zeichen selbst ab - diese Wahl explizit zu besitzen ist die richtige Haltung.
Wie behandelt die "relative Zeit"-Zeile die Schwelle zwischen Einheiten?
Intl.RelativeTimeFormat wählt die größte Einheit, die eine ganze Zahl von mindestens 1 ergibt, und geht von Jahren über Monate, Wochen, Tage, Stunden, Minuten bis Sekunden nach unten. So wird "vor 45 Tagen" zu "vor 1 Monat" - entsprechend dem natürlichen Runden der Menschen. Die API unterstützt auch Lokalisierung, sodass ein französischer Nutzer "il y a 1 mois" sieht. Dein Browser-Gebietsschema, nicht das Datum, steuert diese Sprachauswahl.
Verlässt mein Datum jemals den Tab?
Nein. Die Preact-Insel liest den Auswahlwert, berechnet zwölf Zeichenketten mit Intl und Date und schreibt sie in die Tabelle. Kein fetch, kein XHR, kein Beacon. Die einzige Netzwerkaktivität auf dieser Seite nach dem ersten Laden ist die statische Asset-Cache-Validierung, die Cloudflare Pages für die Astro-Site verwaltet.
Kann ich ein Datum in einem anderen Kalender als dem Gregorianischen formatieren?
Nicht direkt in diesem Werkzeug. Der Browser kann es: Intl.DateTimeFormat akzeptiert eine calendar-Option mit Werten wie hebrew, islamic-umalqura, persian, japanese, buddhist und chinese (ICU-CLDR-gesichert). Für den Produktionseinsatz würdest du { calendar: "persian" } übergeben, um Jalali-Kalenderausgabe zu erhalten. Wir bleiben hier beim Gregorianischen, um die Zwölf-Zeilen-Ausgabe fokussiert und lesbar zu halten; wenn du einen spezifischen Nicht-Gregorianischen Bedarf hast, öffne die DevTools-Konsole und rufe Intl.DateTimeFormat direkt auf.
Warum enthält meine kopierte ISO-Zeichenkette .000Z und nicht nur Z?
toISOString() gibt immer Millisekunden-Präzision aus, auch wenn die Millisekunden null sind. Die spezifikationskorrekte Form ist 2024-01-01T12:00:00.000Z. Die meisten Parser akzeptieren beides, aber einige strikte RFC-3339-Validatoren (beispielsweise in bestimmten OpenAPI-Toolchains) markieren den fehlenden Subsekunden-Bruchteil. Das .000 beizubehalten ist die sicherste interoperable Wahl; entferne es nur, wenn du weißt, dass dein Empfänger es ablehnt.
Kann ich eine Zeichenkette einfügen und sie neu formatieren lassen?
Dieses Werkzeug ist auswahl-orientiert, nicht parser-orientiert. Für lose vom Nutzer eingegebene Zeichenketten wie "nächsten Freitag um 15 Uhr" oder "23.04.2024 15:30" brauchst du einen Parser. Der eingebaute JavaScript-Date-Konstruktor ist bekanntermaßen zu nachsichtig und falsch bei mehrdeutigen Eingaben; Bibliotheken wie date-fns, Luxon und der kommende TC39-Temporal-Vorschlag geben dir explizite Formatzeichenketten. Wenn du bereits einen Unix-Zeitstempel hast, verwende unseren Unix- Zeitstempel-Konverter als Umkehrung dieser Seite.
Mehr Date & Time
Business Days Calculator
Count business days between two dates excluding weekends and custom holidays.
Open toolCountdown Timer
Set a target date and time, then watch a live countdown showing days, hours, minutes and seconds.
Open toolDate Difference Calculator
Calculate the exact difference between two dates in years, months, days, weeks, hours and minutes.
Open toolPomodoro Timer
25-minute work and 5-minute break cycles with progress bar, session counter and phase tracking.
Open toolStopwatch
Precise online stopwatch with start, stop, reset and lap time recording. Centisecond accuracy.
Open toolTimezone Converter
Convert times between timezones instantly. Supports 28+ world timezones with DST handling.
Open tool