GNU/Linux >> Belajar Linux >  >> Linux

Perbandingan tanggal di Bash

Anda dapat membandingkan secara leksikografis dengan konstruk bersyarat [[ ]] dengan cara ini:

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

Dari pria itu:

[[ ekspresi ]]
Mengembalikan status 0 atau 1 bergantung pada evaluasi ekspresi ekspresi bersyarat.

Pembaruan baru:

Jika Anda perlu membandingkan waktu dengan zona waktu yang berbeda, pertama-tama Anda dapat mengonversi waktu tersebut dengan cara ini:

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

Salah satu opsi adalah mengonversi tanggal menjadi jumlah detik sejak zaman UNIX:

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

Anda kemudian dapat membandingkan bilangan bulat ini dengan tanggal lain yang telah diproses dengan cara yang sama:

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

(( )) sintaks digunakan untuk membuat konteks aritmatika saat kita membandingkan dua angka. Anda juga dapat menggunakan [ ${x} -lt ${y} ] yang lebih umum sintaks gaya jika portabilitas menjadi perhatian.

Salah satu keuntungan melakukannya dengan cara ini adalah date memahami berbagai format, misalnya
date -d "next year" +%s . Selanjutnya, date memahami zona waktu, sehingga dapat menangani perbandingan antara pasangan tanggal dengan zona waktu yang berbeda dengan benar.

Namun, jika tidak satu pun dari masalah itu yang menjadi perhatian Anda, maka saya akan mencari solusi j.a..


Linux
  1. Dapatkan mtime file tertentu menggunakan Bash?

  2. Konversi format tanggal dalam bash

  3. periksa apakah argumen adalah tanggal yang valid di bash Shell

  1. Bagaimana cara mendapatkan tanggal/waktu pembuatan file di Bash/Debian?

  2. Bash - Perintah tanggal dan spasi

  3. Bagaimana cara menambahkan stempel waktu ke log skrip bash?

  1. Variabel Ekspor Bash

  2. Dapatkan tanggal kemarin di bash di Linux, DST-safe

  3. kurangi hari dari tanggal di bash