Lexikografisch kann man mit dem Bedingungskonstrukt [[ ]]
vergleichen auf diese Weise:
[[ "2014-12-01T21:34:03+02:00" < "2014-12-01T21:35:03+02:00" ]]
Von dem Mann:
[[ Ausdruck ]]
Gibt einen Status von 0 oder 1 zurück, abhängig von der Auswertung des bedingten Ausdrucks expression.
Neues Update:
Wenn Sie Zeiten mit unterschiedlichen Zeitzonen vergleichen müssen, können Sie diese Zeiten zunächst folgendermaßen konvertieren:
get_date() {
date --utc --date="$1" +"%Y-%m-%d %H:%M:%S"
}
$ get_date "2014-12-01T14:00:00+00:00"
2014-12-01 14:00:00
$ get_date "2014-12-01T12:00:00-05:00"
2014-12-01 17:00:00
$ [[ $(get_date "2014-12-01T14:00:00+00:00") < $(get_date "2014-12-01T12:00:00-05:00") ]] && echo it works
it works
Eine Möglichkeit wäre, das Datum in die Anzahl der Sekunden seit der UNIX-Epoche umzuwandeln:
date -d "2014-12-01T21:34:03+02:00" +%s
Sie können diese Ganzzahl dann mit einem anderen Datum vergleichen, das auf die gleiche Weise verarbeitet wurde:
(( $(date -d "2014-12-01T21:34:03+02:00" +%s) < $(date -d "2014-12-01T21:35:03+02:00" +%s) ))
Die ((
))
Syntax wird verwendet, um einen arithmetischen Kontext zu erstellen, wenn wir zwei Zahlen vergleichen. Sie können auch den allgemeineren [ ${x} -lt ${y} ]
verwenden Style-Syntax, wenn Portabilität ein Problem darstellt.
Ein Vorteil dabei ist, dass date
versteht zum Beispiel eine Vielzahl von Formaten
date -d "next year" +%s
. Außerdem date
versteht Zeitzonen, sodass Vergleiche zwischen Datumspaaren mit unterschiedlichen Zeitzonen korrekt verarbeitet werden können.
Wenn Sie jedoch keines dieser Probleme betrifft, würde ich mich für die Lösung von j.a. entscheiden.