GNU/Linux >> Linux の 問題 >  >> Linux

Bash での日付比較

条件付き構造 [[ ]] と辞書的に比較できます このように:

[[ "2014-12-01T21:34:03+02:00" < "2014-12-01T21:35:03+02:00" ]]

男から:

<ブロック引用>

[[ 表現 ]]
条件式式の評価に応じて、0 または 1 のステータスを返します。

新しいアップデート:

異なるタイムゾーンの時刻を比較する必要がある場合は、最初に次の方法でそれらの時刻を変換できます:

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

1 つのオプションは、日付を UNIX エポックからの秒数に変換することです:

date -d "2014-12-01T21:34:03+02:00" +%s

次に、この整数を同じ方法で処理された別の日付と比較できます:

(( $(date -d "2014-12-01T21:34:03+02:00" +%s) < $(date -d "2014-12-01T21:35:03+02:00" +%s) ))

(( )) 構文は、2 つの数値を比較するときに算術コンテキストを作成するために使用されます。より一般的な [ ${x} -lt ${y} ] を使用することもできます 移植性が懸念される場合は、スタイルの構文を使用してください。

このようにする利点の 1 つは、date たとえば、さまざまな形式を理解する
date -d "next year" +%s .さらに、 date はタイムゾーンを理解するので、タイムゾーンが異なる日付のペア間の比較を正しく処理できます。

ただし、これらの問題のどちらにも関係がない場合は、j.a. のソリューションを使用します。


Linux
  1. 引数が bash シェルで有効な日付かどうかを確認する

  2. Linux、DSTセーフのbashで昨日の日付を取得

  3. bashで日付から日数を引く

  1. Bashを使用して特定のファイルのmtimeを取得しますか?

  2. bash で日付形式を変換する

  3. Bash/Debianでファイル作成日時を取得するには?

  1. Bashエクスポート変数

  2. Bash - 日付コマンドとスペース

  3. タイムスタンプをbashスクリプトログに追加するには?