Jak mogę użyć polecenia date, aby przekonwertować coś w stylu „poniedziałkowy tydzień 40” na datę ISO?
Gram z czymś takim:
date --date='monday week 40' +'%Y-%m-%d'
A data, której szukam, to 2011-10-03.
Ale moim problemem jest to, że ten ciąg daty jest nieprawidłowy, dlatego potrzebuję innego podejścia, aby rozwiązać ten problem.
/Dzięki
%V
Sekwencja formatów używana przez „nieznanego użytkownika” podaje numer tygodnia ISO.Odpowiedzi:
Naprawdę brzydka i prawdopodobnie działa tylko z GNU
date
:Testowany tylko na przykład z 3 października może się nie powieść w niektórych innych przypadkach.
Aktualizacja : jeśli masz lokalizację inną niż eng, musisz określić dane wyjściowe z wewnętrznej daty, aby zabrać się do pracy. (A% F to po prostu RRRR-MM-DD).
źródło
Alternatywne podejście:
źródło
date +%V
Powrót41
), wówczas--date
wartość parametru będzie wynosić+-1weeks last monday
, co w rzeczywistości dwa tygodnie temu, a nie 7 dni temu.date -d 'last monday'
. Wróci wczoraj. Jak myślisz, co by powiedział, gdybyś uruchomił go wczoraj?OK, oto moja próba. Kradnie pomysły z innych odpowiedzi i stara się ułatwić logikę. Jest to oparte na systemie ISO 8601, więc nie będzie poprawne, jeśli mieszkasz w krajach takich jak USA lub Kanada, ale powinno być łatwo regulowane dla tych krajów.
źródło