Bagaimana saya bisa mengetahui tahun kabisat antara tahun 2014 dan 2020 di terminal Linux?
Apakah ada cara menggunakan beberapa kode seperti $cal
- apa saja untuk menunjukkan tahun mana yang melompat tahun antara 2014 dan 2020 secara langsung?
command-line
time
lee
sumber
sumber
Jawaban:
Anda dapat menggunakan
date
kode keluar untuk memeriksa tahun kabisat, dengan mengandalkandate
perilaku menghasilkan kode keluar non 0 untuk tanggal yang tidak valid, jelas tidak ada tanggal 29 Februari di tahun bukan kabisat:sebagai fungsi:
Pemakaian:
Mengenai pertanyaan Anda:
sumber
Hanya varian dari jawaban @ RoVo ...
date -d $a-02-29 +"%Y" 2> /dev/null
menetapkan tanggal ke 29 Februari dan mencetak tahun, mengabaikan segala kesalahan yang terjadi.sumber
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
Di sini, di Stack Overflow, solusi elegan disediakan oleh anubhava :
Simpan di atas dalam file teks bernama
isleap
.Jangan lupa untuk mengatur izin eksekusi:
Menguji:
sumber
date
perintah ini adalah peretasan.Jika Anda tidak ingin bergantung pada beberapa properti "misterius" insidental dari tahun kabisat (seperti keterbagiannya, jumlah hari dalam setahun, atau keberadaan hari tertentu), Anda harus menggunakan bahasa pemrograman dengan perpustakaan kalender yang sesuai fungsi. Saya merekomendasikan Python 1, 2 :
calendar.isleap()
Pemakaian:
Atau sebagai one-liner (tanpa penanganan kesalahan yang tepat):
1 Saya yakin ada solusi Perl setara sederhana.
2
calendar
Modul Python menggunakan kalender Gregorian yang proleptik , yaitu memperluas kalender G. tanpa batas ke masa lalu dan masa depan. Tidak memperhitungkan bahwa G. kalender hanya berlaku pada 1582 atau bahwa beberapa lokal terus menggunakan kalender lain dengan aturan tahun kabisat yang berbeda. Jika Anda memerlukan dukungan untuk kalender lain, misalnya kalender Julian, saya sarankan Anda menginstal dan menggunakan modul ekstensi Python yang sesuai.sumber
def isleap(year):
"""Return True for leap years, False for non-leap years."""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
. Fct yang sama seperti yang digunakan di askubuntu.com/a/1081237/790920