Date (Unix)
date
je un*xová utilita sloužící ke zjištěni aktuálního data a/nebo času. Umožňuje je také nastavit.
Příkaz date
se poprvé objevil v AT&T Unixu verze 1,[1] byl však přítomen již od první verze Research Unixu.[2]
Syntaxe
Volby:
-u
: pro výstup se použije čas dle UTC, nikoli lokální+FORMÁT
: formátovací řetězec;[pozn. 1] může obsahovat speciální interpretované sekvence z funkcestrftime
, začínající %, např.:- %Y – rok
- %m – číslo měsíce
- %b – zkratka názvu měsíce
- %d – den v měsíci (dvojmístný, zleva vyplněný nulou)
- %e – den v měsíci (vyplněný mezerou)
- %a – zkratka názvu dne v týdnu
- %H – hodina (24h čas)
- %M – minuta
- %S – sekunda
- %Z – zkratka časové zóny[pozn. 2]
- %s – počet sekund od epochy unixového času[pozn. 3]
-I[formát]
: zobrazí datum v ISO 8601 formátu, volitelně lze upřesnit formát (date (výchozí), minutes, seconds, …)[pozn. 3][pozn. 4]
Funkce
Zobrazení času
Implicitní formát zobrazení času je %a %b %e %H:%M:%S %Z %Y
.[5] Jazyk výstupu závisí na nastavení locales.
$ date Wed Jan 5 09:36:28 CET 2022
$ date '+letos máme rok %Y'
letos máme rok 2022
časová zóna
Proměnnou prostředí TZ
lze vynutit jinou časovou zónu,[pozn. 5] př.:
$ date -Iminutes; TZ=America/New_York date -Iminutes 2022-01-01T00:10+01:00 2021-12-31T19:10-05:00
Nastavení času
date
s číselným argumentem umožňuje, pokud má uživatel dostatečná oprávnění, datum nastavit.
Existují protichodné formáty data/času pro nastavení. Dle X/Open System Interfaces (XSI), ze které vychází mj. GNU date, je formát mmddHHMM[[YY]YY].[pozn. 6]
BSD systémy používají intuitivnější syntaxi, [[[[[[YY]YY]mm]dd]HH]MM[.SS]].[pozn. 6]
v GNU date lze použít volbu -s
(--set
) s volnějším formátem data.
Volitelný čas
Některé implementace umožňují pracovat s uživatelsky definovaným časem. Např. v GNU date lze parametrem -d
(--date
) předložit čas/datum ve volném formátu.
$ date -u -Iseconds -d 'September 11 2001 8:46:40 EDT' 2001-09-11T12:46:40+00:00
Zavináč a číslo pro počet sekund Unix time, např.:
$ date -d '@2147483647' Tue Jan 19 04:14:07 CET 2038
Odkazy
Poznámky
- Možnost formátování času se objevila pravděpodobně ve 4.3BSD – srvn. příslušnou manuálovou stránku vydání Reno[3] a NET/2[4].
- Nezaměňovat se znakem Z, označujícím UTC zónu
- Není v POSIX standardu.[5]
- Např. v GNU date, FreeBSD 12[1]
- Není bez zajímavosti, že timezone database používá znaménko odchylky od GMT/UTC v opačném smyslu, než je obvyklé; stejnou časovou zónu jako v příkladu níže (odpovídající UTC−5) je možno vyvolat také s
TZ=Etc/GMT+5
čiTZ=UTC+5
. - Zde použitá velikost písmen může být odlišná od té uvedené v příslušných manuálových stránkách, pro lepší konzistenci a podobnost se strftime parametry.
Reference
- Freebsd 13.0 – man date – History [online]. freebsd.org [cit. 2022-01-01]. Dostupné online.
- Research Unix – First Edition Unix – /man/man1/date.1 [online]. The Unix Heritage Society [cit. 2022-01-01]. Dostupné online. (anglicky)
- 4.3BSD Reno – man date [online]. freebsd.org [cit. 2022-01-01]. Dostupné online.
- 4.3BSD NET/2 – man date [online]. freebsd.org [cit. 2022-01-01]. Dostupné online.
- Base Specifications Issue 7 – date [online]. The Open Group, 2008 [cit. 2022-01-01]. Dostupné online.