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