Ich habe versucht, $(date)
in meinem Bash-Shell-Skript zu verwenden, jedoch möchte ich das Datum im Format JJJJ-MM-DD haben. Wie bekomme ich das?
In Bash:
year-month-day von date
erhalten
DATE=`date +%Y-%m-%d`
Jahr-Monat-Tag Stunde: Minute: Sekunde von date
DATE=`date '+%Y-%m-%d %H:%M:%S'`
Andere verfügbare Datumsformate können auf den Date-Manpages angesehen werden :
man date
Versuchen Sie: $(date +%F)
Sie können so etwas tun:
$ date +'%Y-%m-%d'
Sie suchen nach ISO 8601 Standard-Datumsformat, wenn Sie also GNU Datum (oder einen Datums-Befehl moderner als 1988) haben, tun Sie einfach: $(date -I)
date -d '1 hour ago' '+%Y-%m-%d'
Die Ausgabe wäre 2015-06-14
.
$(date +%F_%H-%M-%S)
kann verwendet werden, um Doppelpunkte (:) dazwischen zu entfernen
ausgabe
2018-06-20_09-55-58
Bei der letzten Version von Bash (Version ≥ 4.2) können Sie die eingebaute Variable printf
mit dem Formatmodifizierer %(strftime_format)T
verwenden:
$ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time")
2017-11-10
$ printf '%(%F)T\n' -1 # Synonym of the above
2017-11-10
$ printf -v date '%(%F)T' -1 # Capture as var $date
wenn Sie möchten, dass das Jahr in zwei Formaten vorliegt, z. B. 17 anstelle von 2017, gehen Sie wie folgt vor:
DATE=`date +%d-%m-%y`
#!/bin/bash -e
x='2018-01-18 10:00:00'
a=$(date -d "$x")
b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S")
c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S")
#date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S"
echo Entered Date is $x
echo Second Date is $b
echo Third Date is $c
Hier wird x als Beispieldatum verwendet. In diesem Beispiel werden sowohl die Formatierung der Daten als auch das Erhalten von Datumsangaben 10 Minuten über dem aktuellen Datum angezeigt.
Immer wenn ich eine solche Aufgabe habe, muss ich zurückfallen
$ man strftime
um mich an alle Möglichkeiten zu erinnern.
Ich verwende die folgende Formulierung:
TODAY=`date -I`
echo $TODAY
In der Manpage zu date
gibt es eine Reihe weiterer nützlicher Optionen:
man date
Sie können das Datum als Umgebungsvariable festlegen und später verwenden
setenv DATE `date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
oder
DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
Ich verwende $ (Datum + "% Y-% m-% d") oder $ (Datum + "% Y-% m-% d% T") mit Zeit und Stunden.