Saya melihat bahwa perbandingan tanggal dapat dilakukan dan ada juga datetime.timedelta()
, tetapi saya berjuang untuk mengetahui bagaimana cara memeriksa apakah waktu saat ini ( datetime.datetime.now()
) lebih awal, lebih lambat atau sama dari waktu yang ditentukan (misalnya 8 pagi) terlepas dari tanggalnya.
105
'23:23:00' > '23:59:00'
atau'23:23:00' > '23:09:22'
, seperti yang akan Anda lakukan antara duadatetime.datetime.now().strftime('%H:%M')
nilai. Apakah ini cara terbaik untuk mencapai perbandingan antar waktu? Saya tidak tahu. Apakah itu bekerja? Sejauh yang saya uji, itu berfungsi dengan baik. Tapi yang pasti (dan tentu saja): bukan kesempatan untuk menggunakan ini dengan string datetime yang memiliki bulan, hari kerja.Jawaban:
Anda tidak dapat membandingkan waktu tertentu (seperti "sekarang") dengan acara berulang yang tidak tetap (jam 8 pagi terjadi setiap hari).
Anda dapat memeriksa apakah sekarang sebelum atau sesudah jam 8 pagi hari ini :
>>> import datetime >>> now = datetime.datetime.now() >>> today8am = now.replace(hour=8, minute=0, second=0, microsecond=0) >>> now < today8am True >>> now == today8am False >>> now > today8am False
sumber
Anda dapat menggunakan
time()
metodedatetime
objek untuk mendapatkan waktu, yang dapat Anda gunakan untuk perbandingan tanpa memperhitungkan tanggal:>>> this_morning = datetime.datetime(2009, 12, 2, 9, 30) >>> last_night = datetime.datetime(2009, 12, 1, 20, 0) >>> this_morning.time() < last_night.time() True
sumber
datetime.datetime.now().time()
, jangan lupa tanda kurung di dalamnyanow()
!Anda dapat membandingkan objek datetime.datetime secara langsung
Misalnya:
>>> a datetime.datetime(2009, 12, 2, 10, 24, 34, 198130) >>> b datetime.datetime(2009, 12, 2, 10, 24, 36, 910128) >>> a < b True >>> a > b False >>> a == a True >>> b == b True >>>
sumber
Terinspirasi oleh Roger Pate:
import datetime def todayAt (hr, min=0, sec=0, micros=0): now = datetime.datetime.now() return now.replace(hour=hr, minute=min, second=sec, microsecond=micros) # Usage demo1: print todayAt (17), todayAt (17, 15) # Usage demo2: timeNow = datetime.datetime.now() if timeNow < todayAt (13): print "Too Early"
sumber
Cara lain untuk melakukan ini tanpa menambahkan dependensi atau menggunakan datetime adalah dengan melakukan beberapa penghitungan matematika pada atribut objek waktu. Ini memiliki jam, menit, detik, milidetik, dan zona waktu. Untuk perbandingan yang sangat sederhana, jam dan menit sudah cukup.
d = datetime.utcnow() t = d.time() print t.hour,t.minute,t.second
Saya tidak menyarankan melakukan ini kecuali Anda memiliki kasus penggunaan yang sangat sederhana. Untuk apa pun yang membutuhkan kesadaran zona waktu atau kesadaran tanggal, Anda harus menggunakan datetime.
sumber
Terkejut saya belum melihat liner yang satu ini di sini:
datetime.datetime.now().hour == 8
sumber
Anda Dapat Menggunakan Fungsi Timedelta untuk perbandingan peningkatan waktu x.
>>> import datetime >>> now = datetime.datetime.now() >>> after_10_min = now + datetime.timedelta(minutes = 10) >>> now > after_10_min False
Hanya Kombinasi dari jawaban ini Dan Roger
sumber
datetime memiliki kemampuan perbandingan
>>> import datetime >>> import time >>> a = datetime.datetime.now() >>> time.sleep(2.0) >>> b = datetime.datetime.now() >>> print a < b True >>> print a == b False
sumber