GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Date uvádí špatné číslo týdne pro 31. prosince

To vám dává týden ISO, který začíná v pondělí.

Systém týdenního data ISO je ve skutečnosti kalendářní systém přestupného týdne, který je součástí normy ISO 8601 pro datum a čas vydávané Mezinárodní organizací pro normalizaci (ISO) od roku 1988 (naposledy revidováno v roce 2004) a před tím byl definován v ISO (R) 2015 od roku 1971. Používá se (především) ve státní správě a podnikání pro fiskální roky a také v měření času. Toto bylo dříve známé jako „kódování průmyslového data“. Systém specifikuje týdenní rok na vrcholu gregoriánského kalendáře tím, že definuje zápis pro řadové týdny v roce.


Rok číslování týdnů podle ISO (neformálně nazývaný také rok ISO) má 52 nebo 53 celých týdnů. To je 364 nebo 371 dní místo obvyklých 365 nebo 366 dní. Týden navíc se někdy označuje jako přestupný týden, ačkoli ISO 8601 tento termín nepoužívá.

Týdny začínají pondělím. Rok každého týdne je gregoriánský rok, do kterého spadá čtvrtek. První týden v roce tedy vždy obsahuje 4. ledna. ISO týdenní číslování roku se proto v některých dnech blízko 1. ledna mírně odchyluje od gregoriánského.

Pokud chcete zobrazit 31. 12. jako týden 52, měli byste použít %U , který nepoužívá standard ISO:

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon

Definice čísla týdne je v Evropě a USA odlišná, pravděpodobně normy ISO versus ANSI. To může souviset s týdnem, kdy je neděle – sobota nebo pondělí – neděle, a to opět může souviset s židovskou versus křesťanskou definicí dne Páně (sabat vs neděle).

Pro Evropu týden číslo 1 obsahuje první čtvrtek v lednu, a obsahuje tedy minimálně 4 dny (tj. většinu) připadající na nový rok (čt-pá-so-ne).

Každopádně v takových letech, kdy se VŠECHNY (!!) počty týdnů mezi Evropou a USA liší +/- 1, to nabízí skvělou zábavu při stanovování rozvrhů v nadnárodních společnostech. :-)


Linux
  1. Jak provést příkaz Ping pouze pro N počet paketů

  2. Příklady příkazů date v Linuxu

  3. datum:příkaz nenalezen

  1. Tisk data pro pondělí aktuálního týdne (v bash)

  2. Jak určit počet týdnů v měsíci

  3. gpspipe vrací správné časové razítko, ale špatné datum (21. prosince 1995)

  1. Nastavte datum a čas pro každý příkaz, který provedete v historii Bash

  2. 8 Příklady příkazů rychlého data v Linuxu

  3. Správná syntaxe příkazu id -r