Datum nese rok jen tehdy, když bez něj není jednoznačné. Míra přesnosti se odvozuje od dneška, ne od typu záznamu — stejné pravidlo platí pro termín úkolu, datum schůzky i datum narození.
Pravidlo určuje jen přesnost roku. Pořadí složek, oddělovače a mezery patří locale — proto platí beze změny i v dalších jazycích.
Datum a čas — datum drží stejné pravidlo roku: 26. 8. 9:14
Dlouhý tvar pro nadpisy a věty: 14. července 2026 — rok se tu píše vždy, dlouhý tvar není úsporný tvar.
Měsíc a rok pro hlavičky přehledů: červenec 2026
Jediný zdroj pravdy je apps/web/src/i18n/date-core.ts (pravidlo,
bez závislostí) + i18n/dates.ts (dosazuje jazyk uživatele).
Obrazovky volají formatDate, formatTime,
formatDateTime.
Hodnota pro <input type="date"> a API je záměrně
locale-nezávislé ISO — toDateInputValue(), nikdy
formatDate.
Žádné toLocaleDateString ani ruční
${d.getDate()}. ${d.getMonth()+1}. v obrazovkách — obojí obchází
pravidlo roku a zadrátovává češtinu natvrdo.
U datumů se nepoužívají tabular-nums: datum se čte jako
text, ne jako číslo porovnávané po řádcích.
Datum bez roku se nesmí objevit u záznamu z jiného roku — „14. 11." je pak k nerozeznání od letošního.