Date-Format-Tokens
Es gibt zwei weit verbreitete Familien von Date-Format-Strings, und sie überlappen sich gerade genug, um gefährlich zu sein. strftime – aus C und geerbt von Python, Ruby, PHP und GNU date – verwendet Prozent-Tokens wie %Y. Unicode LDML, verwendet von ICU, Java, moment und dayjs, verwendet wiederholte Buchstaben wie yyyy. In LDML ist MM ein Monat und mm eine Minute; dieses Paar rückwärts zu bekommen ist der klassische Fehler.
Jede Zeile unten ist für denselben Augenblick gerenderst: Montag, 9. März 2026, 14:05:07 UTC. Dieses Datum wird so gewählt, dass nichts verborgen ist – ein einstelliger Tag und Monat exponieren Zero-Padding, die Nachmittagsstunde macht die 12- und 24-Stunden-Uhren sichtbar unterschiedlich, und der Wochentag ist eindeutig.
Eine leere äquivalente Spalte bedeutet, dass der andere Dialekt kein einzelnes Token dafür hat und du den Wert selbst zusammensetzen musst. Die Test-Suite renderst die Kalenderfelder mit den eigenen Datumsfunktionen der Plattform und vergleicht sie mit dieser Tabelle, also können die Beispiele nicht von der Realität abweichen.
Jahr
4| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %Y | yyyy | Vierstelliges Jahr | 2026 |
| %y | yy | Zweistelliges JahrMehrdeutig durch Konstruktion. Vermeide es in etwas Gespeichertem. | 26 |
| %C | Jahrhundert – das Jahr dividiert durch 100 | 20 | |
| %G | YYYY | Unterscheidet sich vom Kalenderjahr um Jahreswechsel. Mit der ISO-Wochennummer verwenden.Unterscheidet sich vom Kalenderjahr um Jahreswechsel. Mit der ISO-Wochennummer verwenden. | 2026 |
Monat
4In LDML ist MM der Monat und mm die Minute.
| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %m | MM | Monat, Zero-Padded | 03 |
| %-m | M | Monat, kein Padding | 3 |
| %b | MMM | Abgekürzter Monat-Name | Mar |
| %B | MMMM | Vollständiger Monat-Name | March |
Tag und Wochentag
8In LDML ist dd der Tagesmonat und DDD der Jahrestag.
| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %d | dd | Tagesmonat, Zero-Padded | 09 |
| %-d | d | Tagesmonat, kein Padding | 9 |
| %e | Tagesmonat, Space-Padded | 9 | |
| %j | DDD | Jahrestag, 001–366 | 068 |
| %a | EEE | Abgekürzter Wochentag-Name | Mon |
| %A | EEEE | Vollständiger Wochentag-Name | Monday |
| %u | Wochentag als Zahl, Montag ist 1%w nummeriert die gleichen Tage von Sonntag als 0. | 1 | |
| %V | ww | ISO-Wochennummer, Wochen beginnend Montag | 11 |
Zeit
8| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %H | HH | Stunde auf der 24-Stunden-Uhr | 14 |
| %-H | H | Stunde, kein Padding | 14 |
| %I | hh | Stunde auf der 12-Stunden-Uhr | 02 |
| %M | mm | Minute | 05 |
| %S | ss | Sekunde | 07 |
| %3N | SSS | Millisekunden | 000 |
| %p | a | AM oder PM | PM |
| %s | Unix-Zeitstempel – Sekunden seit 1970-01-01 UTC | 1773065107 |
Ein Offset ist eine Zahl; ein Zone-Name ist eine Regel. Nur der Name überlebt eine DST-Änderung.
3Ein Offset ist eine Zahl; ein Zone-Name ist eine Regel. Nur der Name überlebt eine DST-Änderung.
| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %z | ZZ | UTC-Offset, kein Doppelpunkt | +0000 |
| %:z | XXX | UTC-Offset mit Doppelpunkt, wie ISO 8601 es will | +00:00 |
| %Z | zzz | Zeit-Zone-AbkürzungAbkürzungen sind nicht eindeutig – CST ist mindestens drei verschiedene Zonen. | UTC |
Häufige Kombinationen
7Aus den Tokens oben gebaut – keine Bibliothek notwendig.
| strftime | LDML | Feld | Renderst als |
|---|---|---|---|
| %F | yyyy-MM-dd | ISO-Datum | 2026-03-09 |
| %T | HH:mm:ss | 24-Stunden-Zeit | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Vollständiger ISO 8601-ZeitstempelDas Format zum Speichern. Sortiert als Text, eindeutig über den Offset. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822 – Email-Header und älteres HTTP | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | US-Konvention, Monat zuerst | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Europäische Konvention, Tag zuerst | 09.03.2026 |
| %% | '' | Ein wörtliches Prozentzeichen | % |