Preskoči na sadržaj

Tokeni za oblik datume

Postoje dvije široko korištene obitelji nizova oblika datuma i one se preklapaju upravo toliko da budu opasne. strftime — od C-a, naslijeđen od Python-a, Ruby-ja, PHP-a i GNU date — koristi tokene postotaka kao %Y. Unicode LDML, korišten od ICU-a, Java-e, moment-a i dayjs-a, koristi ponavljane slova kao yyyy. U LDML-u, MM je mjesec i mm je minuta; pogrešno preuređivanje tog para je klasična greška.

Svaki redak ispod je prikazan za isti trenutak: ponedjeljak 9. ožujka 2026., 14:05:07 UTC. Ta datuma je odabrana tako da ništa se ne skriva — dan i mjesec s jednom znamenkom razotkrivaju dopunjavanje nulama, poslijepodnevni sat čini da se 12- i 24-satni satovi vidljivo razlikuju, a dan u tjednu je nedvosmislen.

Prazan stupac ekvivalenta znači da drugi dijalekt nema jednog tokena za njega i trebate sami oblikovati vrijednost. Test skup prikazuje polja kalendara s vlastitim funkcijama datuma platforme i uspoređuje ih s ovom tablicom, pa primjeri ne mogu odstupiti od stvarnosti.

Godina

4
strftimeLDMLPoljePrikazuje se kao
%YyyyyČetiri znamenke godine2026
%yyyGodine s dvije znamenkeDvosmisleno po konstrukciji. Izbjegavajte ga u bilo čemu pohrane.26
%CStoljeće — godina podijeljena sa 10020
%GYYYYISO godina numeracije tjednaRazlikuje se od kalendarske godine oko Nove godine. Koristite samo s brojem ISO tjedna.2026

Mjesec

4

U LDML-u, MM je mjesec i mm je minuta.

strftimeLDMLPoljePrikazuje se kao
%mMMMjesec, dopunjen nulama03
%-mMMjesec, bez dopunjavanja3
%bMMMSkraćeni naziv mjesecaMar
%BMMMMPuni naziv mjesecaMarch

Dan i dan u tjednu

8

U LDML-u, dd je dan mjeseca i DDD je dan godine.

strftimeLDMLPoljePrikazuje se kao
%dddDan mjeseca, dopunjen nulama09
%-ddDan mjeseca, bez dopunjavanja9
%eDan mjeseca, dopunjen razmakom 9
%jDDDDan godine, 001–366068
%aEEESkraćeni naziv dana u tjednuMon
%AEEEEPuni naziv dana u tjednuMonday
%uDan u tjednu kao broj, ponedjeljak je 1%w broji iste dane od nedjelje kao 0.1
%VwwBroj ISO tjedna, tjedni koji započinju ponedjeljkom11

Vrijeme

8
strftimeLDMLPoljePrikazuje se kao
%HHHSat na 24-satnoj ploči14
%-HHSat, bez dopunjavanja14
%IhhSat na 12-satnoj ploči02
%MmmMinuta05
%SssSekunda07
%3NSSSMilisekunde000
%paAM ili PMPM
%sUnix vremenski pečat — sekunde od 1970-01-01 UTC1773065107

Vremenska zona

3

Pomak je broj; naziv zone je pravilo. Samo naziv preživi promjenu DST-a.

strftimeLDMLPoljePrikazuje se kao
%zZZUTC pomak, bez dvotačke+0000
%:zXXXUTC pomak s dvotačkom, kako ISO 8601 želi+00:00
%ZzzzOznaka vremenske zoneSkraćenice nisu jedinstvene — CST je barem tri različite zone.UTC

Česte kombinacije

7

Izgrađena od tokena iznad — bez biblioteke trebate.

strftimeLDMLPoljePrikazuje se kao
%Fyyyy-MM-ddISO datuma2026-03-09
%THH:mm:ss24-satno vrijeme14:05:07
%FT%T%:zyyyy-MM-dd'T'HH:mm:ssXXXPotpuni ISO 8601 vremenski pečatOblik za pohrane. Sortira se kao tekst, nedvosmisleno oko pomaka.2026-03-09T14:05:07+00:00
%a, %d %b %Y %T %zEEE, dd MMM yyyy HH:mm:ss ZZRFC 2822 — e-mail zaglavlja i stariji HTTPMon, 09 Mar 2026 14:05:07 +0000
%m/%d/%YMM/dd/yyyyUS konvencija, mjesec prvo03/09/2026
%d.%m.%Ydd.MM.yyyyEuropska konvencija, dan prvo09.03.2026
%%''Doslovna znamenka postotaka%

FAQ

Koja je razlika između yyyy i YYYY?
U LDML-u, yyyy je kalendarska godina, a YYYY je ISO godina numeracije tjedna. Razlikuju se nekoliko dana svakoga siječnja: 2027-01-01 pada u ISO tjedan 53 od 2026, pa YYYY čita 2026 tamo. Slučajna upotreba YYYY-a proizvodi grešku koja se pojavljuje jednom godišnje i zatim nestaje, što je razlog zašto je tako teško uhvatiti.
Zašto se moj mjesec pojavljuje kao minute?
Jer ste u LDML dijalektu i koristili ste mm umjesto MM. LDML je osjetljiv na veličinu slova: M je mjesec, m je minuta, D je dan godine, d je dan mjeseca. strftime ima istu zamku na drugome mjestu — %M je minute i %m je mjesec.
Kako dobiti dopunjeni nasuprot nedopunjenom broju?
U strftime-u, GNU proširenje %-d uklanja dopunjavanje, pa je %d 09 i %-d je 9. U LDML-u broj slova postavlja širinu izravno: d je 9 i dd je 09. Nijedan nije prenosiv — %-d ne postoji na svakoj platformi.
Koji oblik trebam pohraniti datume?
ISO 8601 s eksplicitnim pomakom — 2026-03-09T14:05:07+00:00. Sortira se ispravno kao tekst, jednoznačno je oko pomaka, i svaki jezik ga analizira. Pohranite to i oblikujte za prikaz u zadnjem mogućem trenutku; pohranjena lokalna datuma bez pomaka je nepopravljiv gubitak informacija.