Wie kann ich mit dem Befehl date so etwas wie "Montagwoche 40" in ein ISO-Datum konvertieren?
Ich spiele mit so etwas:
date --date='monday week 40' +'%Y-%m-%d'
Und das Datum, nach dem ich suche, wäre der 03.10.2011.
Mein Problem ist jedoch, dass diese Datumszeichenfolge nicht gültig ist. Daher benötige ich einen anderen Ansatz, um dieses Problem zu lösen.
/Vielen Dank
%V
von 'Benutzer unbekannt' verwendete Formatsequenz gibt die ISO-Wochennummer an .Antworten:
Wirklich hässlich und funktioniert wahrscheinlich nur mit GNU
date
:Nur für Ihr Beispiel vom 3. Oktober getestet, kann in einigen anderen Fällen fehlschlagen.
Update : Wenn Sie ein nicht englisches Gebietsschema haben, müssen Sie die Ausgabe ab dem inneren Datum angeben, um zur Arbeit zu gelangen. (Und% F ist nur JJJJ-MM-TT).
quelle
Ein alternativer Ansatz:
quelle
date +%V
zurückgegeben wird41
), ist der--date
Parameterwert+-1weeks last monday
, der tatsächlich vor zwei Wochen und nicht vor sieben Tagen liegt.date -d 'last monday'
. Es wird gestern zurückkehren. Was hätte es wohl gesagt, wenn Sie es gestern betrieben hätten?OK, hier ist mein Versuch. Es stiehlt Ideen aus den anderen Antworten und versucht, die Logik leichter zu befolgen. Dies basiert auf dem ISO 8601-System, daher ist es nicht korrekt, wenn Sie in Ländern wie den USA oder Kanada leben, sollte aber für diese Länder leicht einstellbar sein.
quelle