Bagaimana saya membandingkan dua tanggal untuk melihat mana yang lebih baru, menggunakan Python?
Misalnya, saya ingin memeriksa apakah tanggal saat ini sudah melewati tanggal terakhir dalam daftar yang saya buat, tanggal liburan, sehingga akan mengirim email secara otomatis, memberitahu admin untuk memperbarui file holiday.txt.
<
dan>
operator, sama seperti dengan perbandingan lainnya.int compare_dates(void const *, void const*)
, melemparkan argumen kestruct Date *
dan mengimplementasikan logika perbandingan. Mungkin tidak jelas bagi pendatang baru Python.Jawaban:
Gunakan
datetime
metode dan operator<
dan kerabatnya.sumber
past
danpresent
? Saya tidak dapat memahami contoh Anda dan hasilnya tidak masuk akal.past
danpast_but_a_little_after
. Secara teknis,present
juga di masa lalu ketika perbandinganpast < present
dibuat.Menggunakan
time
Katakanlah Anda memiliki tanggal awal sebagai string seperti ini:
date1 = "31/12/2015"
date2 = "01/01/2016"
Anda dapat melakukan hal berikut:
newdate1 = time.strptime(date1, "%d/%m/%Y")
dannewdate2 = time.strptime(date2, "%d/%m/%Y")
mengubahnya menjadi format tanggal python. Kemudian, perbandingannya jelas:newdate1 > newdate2
akan kembaliFalse
newdate1 < newdate2
akan kembaliTrue
sumber
datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2)
akan kembaliTrue
.datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2)
akan kembalidatetime.timedelta(-1)
.datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2)
akan kembalidatetime.timedelta(1)
.lihat dokumen .
sumber
Jawaban lain menggunakan
datetime
dan perbandingan juga berfungsi hanya untuk waktu, tanpa tanggal.Misalnya, untuk memeriksa apakah saat ini kurang lebih dari jam 8:00 pagi, kita dapat menggunakan:
Dan kemudian dibandingkan dengan:
yang akan kembali
True
sumber
Untuk menghitung hari dalam dua perbedaan tanggal, dapat dilakukan seperti di bawah ini:
Karena jika satu detik lebih dari tanggal jatuh tempo maka kita harus menagih
sumber