Kirakan perbezaan antara dua tarikh di bash

Kirakan perbezaan antara dua tarikh di bash

Dalam bash, anda boleh dengan mudah mengira perbezaan antara dua tarikh. Ini boleh berguna dalam pelbagai senario, seperti mengira bilangan hari antara dua peristiwa atau menentukan umur seseorang. Dalam artikel ini, kita akan membincangkan kaedah yang berbeza untuk mengira perbezaan antara dua tarikh di Bash.

Kirakan perbezaan antara dua tarikh

Perintah 'tarikh' di bash boleh digunakan untuk mengira perbezaan antara dua tarikh. Sintaks untuk menggunakan perintah 'tarikh' adalah seperti berikut:

echo $ ((($ (tarikh -d "yyyy-mm-dd" +%s)-$ (date -d "yyyy-mm-dd" +%s))/86400))
1echo $ ((($ (tarikh -d "yyyy-mm-dd" +%s)-$ (date -d "yyyy-mm-dd" +%s))/86400))

Dalam perintah di atas, ganti "Yyyy-mm-dd" Dengan kedua -dua tarikh yang anda mahu bandingkan dalam format yang sama. Perintah akan mengeluarkan bilangan hari antara kedua -dua tarikh.

Mari lihat contoh. Sekiranya anda ingin mengira bilangan hari antara 1 Januari 2023 dan 28 Februari 2023, Anda boleh menggunakan arahan berikut:

echo $ ((($ (tarikh -d "2023-02-28" +%s)-$ (tarikh -d "2023-01-01" +%s))/86400))
1echo $ ((($ (tarikh -d "2023-02-28" +%s)-$ (tarikh -d "2023-01-01" +%s))/86400))

Output arahan ini akan:

58
158

Ini bermaksud ada 58 hari Antara 1 Januari 2023 dan 28 Februari 2023.

Kaedah 2: Menggunakan perintah 'BC'

Perintah 'BC' di bash boleh digunakan untuk melakukan pengiraan matematik. Untuk mengira perbezaan antara dua tarikh menggunakan perintah 'BC', gunakan sintaks berikut:

echo \ ($ (date -d "yyyy-mm-dd" +%s)-$ (date -d "yyyy-mm-dd" +%s) \) / 86400 | BC
1echo \ ($ (date -d "yyyy-mm-dd" +%s)-$ (date -d "yyyy-mm-dd" +%s) \) / 86400 | BC

Dalam perintah di atas, ganti "Yyyy-mm-dd" Dengan kedua -dua tarikh yang anda mahu bandingkan dalam format yang sama. Perintah akan mengeluarkan bilangan hari antara kedua -dua tarikh.

Sebagai contoh:

echo \ ($ (tarikh -d "2023-02-28" +%s)-$ (tarikh -d "2023-01-01" +%s) \) / 86400 | SM #Output: 58
123echo \ ($ (tarikh -d "2023-02-28" +%s)-$ (tarikh -d "2023-01-01" +%s) \) / 86400 | SM #Output: 58

Kaedah 3: Menggunakan perintah 'awk'

Perintah 'awk' di bash juga boleh digunakan untuk mengira perbezaan antara dua tarikh. Gunakan sintaks berikut:

echo $ (tarikh -d "yyyy-mm-dd" +%s) $ (tarikh -d "yyyy-mm-dd" +%s) | awk 'print ($ 1 - $ 2) / 86400'
1echo $ (tarikh -d "yyyy-mm-dd" +%s) $ (tarikh -d "yyyy-mm-dd" +%s) | awk 'print ($ 1 - $ 2) / 86400'

Dalam perintah di atas, ganti "Yyyy-mm-dd" Dengan kedua -dua tarikh yang anda mahu bandingkan dalam format yang sama. Perintah akan mengeluarkan bilangan hari antara kedua -dua tarikh.

Sebagai contoh:

echo $ (tarikh -d "2023-02-28" +%s) $ (tarikh -d "2023-01-01" +%s) | awk 'print ($ 1 - $ 2) / 86400' #Output: 58
123echo $ (tarikh -d "2023-02-28" +%s) $ (tarikh -d "2023-01-01" +%s) | awk 'print ($ 1 - $ 2) / 86400' #Output: 58

Kesimpulan

Mengira perbezaan antara dua tarikh dalam bash boleh dilakukan dengan menggunakan arahan yang berbeza, seperti 'tarikh', 'bc', dan 'awk'. Dengan menggunakan arahan ini, anda boleh dengan mudah mengira bilangan hari antara dua tarikh. Mengetahui cara mengira perbezaan antara dua tarikh boleh berguna dalam pelbagai senario, seperti mengira umur seseorang atau bilangan hari antara dua peristiwa.