GNU/Linux >> Belajar Linux >  >> Linux

Hitung Perbedaan Tanggal dengan Cepat?

Saya sering ingin membuat beberapa perhitungan tanggal cepat, seperti:

  • Apa perbedaan antara kedua tanggal ini?
  • Tanggal berapa n minggu setelah tanggal lain ini?

Saya biasanya membuka kalender dan menghitung hari, tetapi saya pikir harus ada program/skrip yang bisa saya gunakan untuk melakukan perhitungan semacam ini. Ada saran?

Jawaban yang Diterima:

"n minggu setelah kencan" mudah dengan tanggal GNU (1):

$ date -d 'now + 3 weeks'
Tue Dec  6 23:58:04 EST 2011
$ date -d 'Aug 4 + 3 weeks'
Thu Aug 25 00:00:00 EST 2011
$ date -d 'Jan 1 1982 + 11 weeks'
Fri Mar 19 00:00:00 EST 1982

Saya tidak tahu cara sederhana untuk menghitung perbedaan antara dua tanggal, tetapi Anda dapat membungkus sedikit logika di sekitar tanggal (1) dengan fungsi shell.

datediff() {
    d1=$(date -d "$1" +%s)
    d2=$(date -d "$2" +%s)
    echo $(( (d1 - d2) / 86400 )) days
}
$ datediff '1 Nov' '1 Aug'  # Note: answer should be 92 days but in my timezone, DST starts between the dates.
91 days

Tukar d1 dan d2 jika Anda ingin penghitungan tanggal dengan cara lain, atau mendapatkan sedikit lebih menarik untuk membuatnya tidak masalah. Selanjutnya, jika ada transisi non-DST ke DST dalam interval, satu hari hanya akan berlangsung selama 23 jam; Anda dapat menggantinya dengan menambahkan hari ke jumlah tersebut.

echo $(( (((d1-d2) > 0 ? (d1-d2) : (d2-d1)) + 43200) / 86400 )) days

Linux
  1. Gunakan awk untuk menghitung frekuensi huruf

  2. tanggal Contoh Perintah di Linux

  3. tanggal:perintah tidak ditemukan

  1. Perbandingan tanggal di Bash

  2. Analog runasdate Linux

  3. Hitung Hari Sejak 1/1/1970

  1. Mengelola kebijakan kata sandi

  2. hitung total ruang disk yang digunakan oleh file yang lebih lama dari 180 hari menggunakan find

  3. kurangi hari dari tanggal di bash