Tokeny formatu daty
Istnieją dwie szeroko używane rodziny łańcuchów formatu daty i nakładają się na tyle, aby być niebezpieczne. strftime — z C i odziedziczone przez Python, Ruby, PHP i GNU date — używa tokenów procentowych jak %Y. Unicode LDML, używany przez ICU, Java, moment i dayjs, używa powtórzonych liter jak yyyy. W LDML MM to miesiąc a mm to minuta; przywrócenie tej pary wstecz to klasyczny błąd.
Każdy wiersz poniżej jest renderowany dla tej samej chwili: poniedziałek 9 marca 2026, 14:05:07 UTC. Ta data jest wybrana, aby nic nie się ukrywało — pojedynczy-cyfrowy dzień i miesiąc ujawniają dopełnienie zerami, godzina popołudia sprawia, że zegary 12- i 24-godzinne różnią się widocznie, a dzień tygodnia jest jednoznaczny.
Pusta kolumna równoważna oznacza, że inny dialekt nie ma jednego tokena dla niego i musisz skomponować wartość samemu. Zestaw testów renderuje pola kalendarza za pomocą funkcji daty samej platformy i porównuje je z tą tabelą, więc przykłady nie mogą dryfować od rzeczywistości.
Rok
4| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %Y | yyyy | Czterocyfrowy rok | 2026 |
| %y | yy | Dwucyfrowy rokNiejednoznaczny przez konstrukcję. Unikaj go w czymkolwiek przechowanym. | 26 |
| %C | Wiek — rok podzielony przez 100 | 20 | |
| %G | YYYY | Rok numerowania tygodnia ISORóżni się od roku kalendarzowego wokół Nowego Roku. Używaj tylko z numerem tygodnia ISO. | 2026 |
Miesiąc
4W LDML MM to miesiąc i mm to minuta.
| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %m | MM | Miesiąc, dopełniony zerami | 03 |
| %-m | M | Miesiąc, bez dopełnienia | 3 |
| %b | MMM | Skrócona nazwa miesiąca | Mar |
| %B | MMMM | Pełna nazwa miesiąca | March |
Dzień i dzień tygodnia
8W LDML dd to dzień miesiąca i DDD to dzień roku.
| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %d | dd | Dzień miesiąca, dopełniony zerami | 09 |
| %-d | d | Dzień miesiąca, bez dopełnienia | 9 |
| %e | Dzień miesiąca, dopełniony spacją | 9 | |
| %j | DDD | Dzień roku, 001–366 | 068 |
| %a | EEE | Skrócona nazwa dnia tygodnia | Mon |
| %A | EEEE | Pełna nazwa dnia tygodnia | Monday |
| %u | Dzień tygodnia jako liczba, poniedziałek to 1%w numeruje te same dni od niedzieli jako 0. | 1 | |
| %V | ww | Numer tygodnia ISO, tygodnie zaczynające się poniedziałek | 11 |
Czas
8| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %H | HH | Godzina na zegarze 24-godzinnym | 14 |
| %-H | H | Godzina, bez dopełnienia | 14 |
| %I | hh | Godzina na zegarze 12-godzinnym | 02 |
| %M | mm | Minuta | 05 |
| %S | ss | Sekunda | 07 |
| %3N | SSS | Milisekundy | 000 |
| %p | a | AM lub PM | PM |
| %s | Uniksowa sygnatura czasowa — sekundy od 1970-01-01 UTC | 1773065107 |
Strefa czasowa
3Offset to liczba; nazwa strefy to reguła. Tylko nazwa przetrwa zmianę DST.
| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %z | ZZ | Offset UTC, bez dwukropka | +0000 |
| %:z | XXX | Offset UTC z dwukropkiem, jak chce ISO 8601 | +00:00 |
| %Z | zzz | Skrót strefy czasowejSkróty nie są unikalne — CST jest co najmniej trzema różnymi strefami. | UTC |
Typowe kombinacje
7Zbudowany z tokenów powyżej — nie potrzebna żadna biblioteka.
| strftime | LDML | Pole | Renders as |
|---|---|---|---|
| %F | yyyy-MM-dd | Data ISO | 2026-03-09 |
| %T | HH:mm:ss | 24-godzinny czas | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Pełna sygnatura czasowa ISO 8601Format do przechowywania. Sortuje się jako tekst, jednoznaczny o offsetie. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822 — nagłówki e-mail i starszy HTTP | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | Konwencja USA, miesiąc najpierw | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Konwencja europejska, dzień najpierw | 09.03.2026 |
| %% | '' | Dosłowny znak procent | % |