GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan perbedaan antara dua tanggal di bawah bash

Mengusulkan solusi ini yang menggunakan bc :

current="$(date +%s.%N)" #current date, precise to nanoseconds
old="$(date +%s.%N -d "$(sh some_script_that_gives_a_date.sh)")" #convert output to ns too
diff=$(echo "$current-$old" |bc)

date +%s.%N -d $1 mengambil tanggal arbitrer dan mengonversinya ke format tertentu (seperti dalam kasus ini +%s.%N , sebuah float detik) . Ketahuilah bahwa

-d bukan bagian dari tanggal POSIX. [Tapi] selama [Anda] tidak bekerja pada distribusi seperti Solaris ([OP] telah menandainya dengan linux dan bukan unix) [Anda] seharusnya bagus. :)

(komentar oleh jaypal singh pada jawaban ini)

Untuk mengubahnya kembali menjadi dapat dibaca manusia, Anda dapat menggunakan:
date $2 -d @0$diff #Pad diff with leading zero

Dimana $2 lagi adalah format tanggal lihat misalnya di sini


let DIFF=(`date +%s -d 20120203`-`date +%s -d 20120115`)/86400
echo $DIFF

Linux
  1. Perbedaan Antara Operator Bash [[ Vs [ Vs ( Vs ((?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Linux – Bagaimana Cara Menghapus File yang Dibuat Antara Dua Kali?

  1. Dapatkan waktu saat ini dalam hitungan detik sejak Zaman di Linux, Bash

  2. Cara mendapatkan perbedaan (hanya penambahan) antara dua file di linux

  3. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  1. Bagaimana cara memeriksa tanggal instalasi sistem operasi linux Anda?

  2. Bagaimana Cara Mendapatkan Tty Di Bash Yang Sedang Berjalan?

  3. Bagaimana saya bisa mendapatkan kata-kata di antara dua contoh teks/pola pertama?