Kiedy próbuję uzyskać numer tygodnia dla 31 grudnia, zwraca 1. Gdy otrzymam numer tygodnia dla 30 grudnia, otrzymuję 52 --- tego właśnie oczekiwałbym. Dzień w poniedziałek jest poprawny. To jest na RPI z Ubuntu.
$ date -d "2018-12-30T1:58:55" +"%V%a"
52Sun
$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
Ten sam problem bez ciągu czasu
$ date -d "2018-12-31" +"%V%a"
01Mon
linux
command-line
date
George Shafer
źródło
źródło
date
?Odpowiedzi:
To daje tydzień ISO, który zaczyna się w poniedziałek.
Jeśli chcesz pokazać 12/31 jako tydzień 52, powinieneś użyć
%U
, który nie korzysta ze standardu ISO:źródło
Definicja numeru tygodnia jest różna w Europie i USA, prawdopodobnie ISO w porównaniu ze standardami ANSI. Może to być związane z tygodniem niedziela - sobota lub poniedziałek - niedziela, a to znowu może być związane z żydowską kontra chrześcijańską definicją Dnia Pańskiego (szabat vs niedziela).
W Europie tydzień nr 1 zawiera pierwszy czwartek w styczniu, a zatem zawiera minimum 4 dni (tj. Większość) należącą do nowego roku (czwartek-piątek-sobota-niedziela).
W każdym razie, w takich latach, w których WSZYSTKIE (!!) numery tygodni różnią się o +/- 1 w Europie i USA, daje to świetną zabawę przy ustalaniu harmonogramów w międzynarodowych firmach. :-)
źródło