GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden des Befehls "Datum", um den vorherigen, aktuellen und nächsten Monat abzurufen

Das Hauptproblem tritt auf, wenn Sie die date --date Option nicht verfügbar haben und Sie keine Berechtigung haben, sie zu installieren, dann versuchen Sie es unten -

Previous month
#cal -3|awk 'NR==1{print toupper(substr($1,1,3))"-"$2}'
DEC-2016 
Current month
#cal -3|awk 'NR==1{print toupper(substr($3,1,3))"-"$4}'
JAN-2017
Next month
#cal -3|awk 'NR==1{print toupper(substr($5,1,3))"-"$6}'
FEB-2017

Das Problem ist, dass date nimmt Ihre Anfrage ganz wörtlich und versucht, ein Datum vom 31. September (das ist der 31. Oktober minus einem Monat) zu verwenden, und dann, weil das nicht existiert, verschiebt es sich auf den nächsten Tag, der es tut. Die date Dokumentation (ab info date ) hat folgenden Ratschlag:

Die Unschärfe in Einheiten kann Probleme mit relativen Elementen verursachen. Beispielsweise könnte `2003-07-31 -1 Monat' zu 2003-07-01 ausgewertet werden, weil 2003-06-31 ein ungültiges Datum ist. Um den Vormonat zuverlässiger zu bestimmen, können Sie den Monat vor dem 15. des laufenden Monats erfragen. Zum Beispiel:

 $ date -R
 Thu, 31 Jul 2003 13:02:39 -0700
 $ date --date='-1 month' +'Last month was %B?'
 Last month was July?
 $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
 Last month was June!

Wenn Sie Datum in einer MacOS-Umgebung verwenden, versuchen Sie Folgendes:

ST1:~ ejf$ date
Mon Feb 20 21:55:48 CST 2017
ST1:~ ejf$ date -v-1m +%m
01
ST1:~ ejf$ date -v+1m +%m
03

Außerdem würde ich den vorherigen und nächsten Monat lieber am ersten Tag jedes Monats berechnen, damit Sie keine Probleme mit Monaten haben, die am 30./31. oder 28./29. (Schaltjahr Februar/Februar) enden


Folgendes wird tun:

date -d "$(date +%Y-%m-1) -1 month" +%-m
date -d "$(date +%Y-%m-1) 0 month" +%-m
date -d "$(date +%Y-%m-1) 1 month" +%-m

oder nach Bedarf:

LAST_MONTH=`date -d "$(date +%Y-%m-1) -1 month" +%-m`
NEXT_MONTH=`date -d "$(date +%Y-%m-1) 1 month" +%-m`
THIS_MONTH=`date -d "$(date +%Y-%m-1) 0 month" +%-m`

Sie haben nach einer Ausgabe wie 9,10,11 gefragt, also habe ich den %-m verwendet

%m (ohne -) erzeugt eine Ausgabe wie 09,... (führende Null)

dies funktioniert auch für mehr/weniger als 12 Monate:

date -d "$(date +%Y-%m-1) -13 month" +%-m

Probieren Sie es einfach aus

date -d "$(date +%Y-%m-1) -13 month"

um das vollständige Ergebnis zu sehen


Linux
  1. Verwenden des Befehls timedatectl zum Ändern von Uhrzeit und Datum auf einem RHEL7-Linux-System

  2. Holen Sie sich die aktuelle Uhrzeit in Stunden und Minuten

  3. Bash - Datumsbefehl und Leerzeichen

  4. Stellen Sie die relative Zeit über die Befehlszeile ein

  5. Linux erhält den UTC-Offset von der aktuellen (oder anderen) Zeitzone zu einem bestimmten Datum und einer bestimmten Uhrzeit

Korrigieren Sie ganz einfach einen Tippfehler des vorherigen Befehls mit dem Karat-Symbol (^).

Lernen Sie Ihr System kennen (über die Befehlszeile)

So erhalten Sie das aktuelle Datum und die Uhrzeit in JavaScript

Tipps und Tricks zur Verwendung des Linux-Befehls wget

So klonen und wiederherstellen Sie eine Linux-Partition mit dem dd-Befehl

Wie man den DD-Befehl verwendet und wie man ISO damit brennt