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 funkce strftime, 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 2024

č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

  1. 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].
  2. Nezaměňovat se znakem Z, označujícím UTC zónu
  3. a b Není v POSIX standardu.[5]
  4. Např. v GNU date, FreeBSD 12[1]
  5. 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 či TZ=UTC+5.
  6. a b 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

  1. a b Freebsd 13.0 – man date – History [online]. freebsd.org [cit. 2022-01-01]. Dostupné online. 
  2. Research Unix – First Edition Unix – /man/man1/date.1 [online]. The Unix Heritage Society [cit. 2022-01-01]. Dostupné online. (anglicky) 
  3. 4.3BSD Reno – man date [online]. freebsd.org [cit. 2022-01-01]. Dostupné online. 
  4. 4.3BSD NET/2 – man date [online]. freebsd.org [cit. 2022-01-01]. Dostupné online. 
  5. a b Base Specifications Issue 7 – date [online]. The Open Group, 2008 [cit. 2022-01-01]. Dostupné online. 

Externí odkazy