Ich bin daran interessiert, eine Darstellung des aktuellen Jahresquartals sowie des Jahresquartals des Vormonats auszugeben.
Wenn heute der 1. Januar 2012 ist, würde ich gerne bekommen
2012q1
und
2011q4
als die jeweiligen Ausgänge.
command-line
date
Smokris
quelle
quelle
%m
gibt es an,09
welche Bash aufgrund der führenden 0 versucht, als oktal zu interpretieren, was einen Fehler auslöst, der besagt09: value too great for base (error token is "09")
. Dies kann behoben werden, indem das 0-Auffüllen durch Ändern%m
auf deaktiviert wird%-m
.Benutze meine Dateutils :
Die Flags
%q
und%Q
sind spezifisch für dateutils und geben das Quartal als Zahl oder in Form zurückQ<NUMBER>
.quelle
dconv now -f%Y%Q | tr Q q
wenn Sie wirklich brauchen, dass das Q niedriger ist. (PS: Wir verpacken dies in Fedora mitdate
als Präfix anstelle vond
, also "dateconv
".)Alle Lösungen, die durch vier geteilt werden, schlagen fehl, zum Beispiel im November:
Die richtige Mathematik wäre:
Und als solches wäre das Quartal des laufenden und des Vormonats:
Es sind nur zwölf Werte zu überprüfen, wirklich ...
quelle
Wahrscheinlich gibt es keine direkte Lösung.
Sie könnten
awk
so viele Back-Ticks vermeiden.Eine
perl
Lösung wäre aber saubererperl
undDateTime
eine große Voraussetzung.quelle
date
zweimalige Aufrufen (und Übergeben von Parametern) vermeidet .Teilen Sie das Format mit Datum, berechnen Sie mit awk, formatieren Sie mit printf:
Nur Date und Bash:
quelle
2012q0
was falsch ist.Eine Alternative, eher als Kuriosität. Wenn GNU
awk
beteiligt ist,date
wird nicht benötigt:quelle
Rufen Sie
date
an, um das aktuelle Jahr und den aktuellen Monat abzurufen, und erledigen Sie den Rest mit der Arithmetik in der Shell.quelle
Jahresquartal für diesen Monat
Jahresquartal für den vergangenen Monat
quelle
Grundlegende Mathematik für dieses Quartal und das Quartal des letzten Monats:
Das Skript verwendet die folgenden Teile:
quelle
Es gibt jetzt das
%q
Format, um diese Informationen anzuzeigen.Aus dem Release-Protokoll von coreutils-8.26 vom 30. November 2016:
Und ja es funktioniert!
quelle
Wenn Sie das 13-Wochen- Geschäftsquartal möchten , das auf dem ISO-Wochenkalender basiert, funktioniert das neue praktische% q leider nicht. Hier ist eine Version der dateless-Lösung von @ manatwork mit awk / strftime.
Das letzte kleine ternäre Bit behandelt die ISO-Schaltwochenjahre, in denen das letzte Quartal 14 Wochen umfasst.
quelle