Date
Datum a čas, tedy přesněji: určitý okamžik v čase s přesností na milisekundy.
Hodnota typu java.util.Date
.
Získání data v TFS
Pro vytvoření data v šabloně slouží funkce asDate.
Datum je také hodnotou některých atributů assetů: běžné jsou articleDate
, validFrom
, validTo
, createDate
a modifyDate
.
Výpis data
Přímý výpis data používá pro češtinu pattern "d.M.yyyy".
POZOR na velikost písmen! např. D.m.YYYY by vypsal "pořadí dne v roce". "minuta". "týdenní rok"
{asDate()}
18.6.2009
Pro ostatní jazyky se snaží zvolit defaultní formát automaticky (formát velikosti MEDIUM
pro dané locale voláním metody getInstance
třídy DateFormat).
{options forceLanguage="en"}
{asDate()}
{/options}
Jun 18, 2009
Skutečný výpis může tedy pro jiné jazyky než češtinu pravděpodobně záviset na verzi javy a nastavení serveru; pokud klient trvá na zachování konkrétního výpisu, je lepší s ohledem na dopřednou kompatibilitu uvést formát explicitně.
Pattern je možné změnit uvedením parametru výpisu pattern
. K formátování se používá SimpleDateFormat – v jeho dokumentaci je popsaný význam jednotlivých znaků patternu.
{asDate() pattern="d. MMMM yyyy 'v' H:mm"}
18. červen 2009 v 9:07
V novějších verzích systému jNetPublish je možné pomocí příkazu options nastavit locale, kterým se bude řídit výpis slovně reprezentovaných částí data (měsíce, dny v týdnu). Defaultně se bere locale podle aktuálního jazyka.
{options forceLanguage="en"}
{_template.modifyDate pattern="MMMM d, yyyy"}
{/options}
June 18, 2009
Pokud je třeba s formátovanou reprezentací data dále pracovat jako s řetězcem, lze použít funkci format.
Selekce podhodnoty
Používá Calendar k získání různých složek data.
date
- (Integer) Den v měsíci podle obvyklého číslování. Tzn. hodnota 12 pro 12. ledna nebo 12. února atd.
dayOfMonth
- (Integer) Den v měsíci (shodně s předchozím).
day
- (Integer) Den v týdnu. Týden začíná nedělí, která má číslo 1, tzn. pondělí je hodnota 2 atd.; sobota je hodnota 7.
dayOfWeek
- (Integer) Den v týdnu (shodně s předchozím).
dayOfYear
- (Integer) Den v roce – pořadové číslo dne v roce, číslování od jedné. Tzn. hodnota 1 pro 1. ledna, hodnota 32 pro 1. února atd.
month
- (Integer) Měsíc – pořadové číslo měsíce v roce, číslování od nuly. Tzn. hodnota 0 pro leden, hodnota 1 pro únor atd.
year
- (Integer) Rok v obvyklém číslování.
hours
- (Integer) Hodiny v daném dni, to znamená číslo od 0 do 23.
minutes
- (Integer) Minuty v dané hodině, tzn. číslo od 0 do 59.
seconds
- (Integer) Sekundy v dané minutě, tzn. číslo od 0 do 59.
time
- (Long) Počet milisekund od 1.1. 1970
instant
- (Instant) Instant reprezentace
{let d := asDate("12.1.2009 10:09:56", "d.M.yyyy hh:mm:ss")
/* 12.1.2009 bylo pondeli */}
date: {d.date}
dayOfMonth: {d.dayOfMonth}
day: {d.day}
dayOfWeek: {d.dayOfWeek}
dayOfYear: {d.dayOfYear}
month: {d.month}
year: {d.year}
hours: {d.hours}
minutes: {d.minutes}
seconds: {d.seconds}
date: 12
dayOfMonth: 12
day: 2
dayOfWeek: 2
dayOfYear: 12
month: 0
year: 2009
hours: 10
minutes: 9
seconds: 56
Pochopitelně nemá smysl k výpisu data používat skládání a lokalizaci těchto podhodnot – k tomu slouží přímý výpis s parametrem pattern
. Pokud chceme získat lokalizovanou reprezentaci data jako řetězec, je třeba použít funkci format.
Tentýž postup je vhodné použít i v případě, že chceme pracovat s jedinou komponentou data v lokalizované podobě.
{options forceLanguage="en"}
{let currentMonth := format(asDate(), "MMMM")}
{/options}
{toLowerCase(currentMonth)}
june
Použití komponent data má smysl v různých podmíněných výrazech.
{if asDate().day == 2}Už zase pondělí...{/if}
Speciální význam má klíč time
:
time
- (Long) Počet milisekund od 1.1.1970 GMT reprezentovaný objektem.
Je možné (a vhodné) ho používat jako timestamp v případech, kdy nezáleží na formátu výpisu.
<a href="{link(a) updated=a.modifyDate.time}">...</a>
Mapování
Probíhá stejně jako selekce.
Sekvenční zpracování
Chová se jako prázdná sekvence.
Převod na logickou hodnotu
Vyhodnotí se vždycky jako true
.