Interesuje mnie przedstawienie reprezentacji bieżącego kwartału, a także kwartału poprzedniego miesiąca.
Jeśli dzisiaj jest 1 stycznia 2012 r., Chciałbym dostać
2012q1
i
2011q4
jako odpowiednie wyjścia.
command-line
date
smokris
źródło
źródło
%m
daje,09
który bash próbuje interpretować jako ósemkowy z powodu wiodącego 0, więc generuje to błąd, który mówi09: value too great for base (error token is "09")
. Można to naprawić, wyłączając wypełnienie 0, zmieniając%m
na%-m
.Użyj moich dateutils :
%q
I%Q
flagi są specyficzne dla dateutils i powrót kwartał pod numerem lub w formieQ<NUMBER>
.źródło
dconv now -f%Y%Q | tr Q q
jeśli naprawdę potrzebujesz tego Q, aby małe litery. (PS:date
d
dateconv
Wszystkie rozwiązania dzielone przez cztery zawodzą, na przykład listopad:
Prawidłowa matematyka to:
I jako taki kwartał bieżącego i poprzedniego miesiąca byłby następujący:
To tylko dwanaście wartości do sprawdzenia, naprawdę…
źródło
Prawdopodobnie nie ma bezpośredniego rozwiązania.
Możesz użyć,
awk
aby uniknąć tylu tyknięć.perl
Rozwiązaniem byłoby czyszczenia, aleperl
iDateTime
są ciężkie nieodzowna.źródło
date
podwójnego wywoływania (i przekazywania parametrów) .Podziel format na datę, oblicz za pomocą awk, sformatuj za pomocą printf:
Tylko randka i bash:
źródło
2012q0
które jest niepoprawne.Alternatywa, bardziej jako ciekawostka. Jeśli
awk
zaangażowany jest GNU ,date
nie jest potrzebny:źródło
Zadzwoń,
date
aby pobrać bieżący rok i miesiąc, a resztę wykonaj z arytmetyką w powłoce.źródło
Rok-kwartał w tym miesiącu
Rok-kwartał za ostatni miesiąc
źródło
Podstawowa matematyka dla tego kwartału i kwartału ubiegłego miesiąca:
Skrypt składa się z następujących części:
źródło
Istnieje teraz
%q
format wyświetlania tych informacji.Z dziennika wersji coreutils-8.26 z 30 listopada 2016 r .:
I tak to działa!
źródło
Jeśli chcesz 13-tygodniowego kwartału obrachunkowego opartego na kalendarzu tygodni ISO, nowy przydatny% q niestety nie zadziała. Oto wersja bez danych rozwiązania @ manatwork z awk / strftime.
Ostatni mały bit trójskładnikowy obsługuje lata przestępne ISO, w których ostatni kwartał ma 14 tygodni.
źródło