Saya memiliki dua datetime.time
nilai, exit
dan enter
dan saya ingin melakukan sesuatu seperti:
duration = exit - enter
Namun, saya mendapatkan kesalahan ini:
TypeError: jenis operan tidak didukung untuk -: 'datetime.time' dan 'datetime.time
Bagaimana cara melakukannya dengan benar? Salah satu solusi yang mungkin adalah mengonversi time
variabel menjadi datetime
variabel dan kemudian substruct, tapi saya yakin kalian pasti memiliki cara yang lebih baik dan lebih bersih.
datetime(1,1,1,0,0,0)
alih-alihdate.today()
.datetime
exit
, karenaexit
merupakan fungsi bawaan.combine
metode dalamdatetime
modul saya :AttributeError: 'module' object has no attribute 'combine'
datetime
modul dan memilikidatetime
objek di dalamnya. Objek di dalamnya memilikicombine
metode. Jika Anda hanya mengimpordatetime
(seperti iniimport datetime
:), maka yang perlu Anda lakukan nanti adalah inidatetime.datetime.combine
.date.today()
before dan thedate.today()
later akan mengembalikan nilai yang berbeda. Akan lebih baik jika memberikan nilaidate.today()
pada variabel.Menggunakan:
Penggunaannya
date.min
sedikit lebih ringkas dan berfungsi bahkan saat tengah malam.Ini mungkin tidak terjadi
date.today()
karena mungkin memberikan hasil yang tidak diharapkan jika panggilan pertama terjadi pada 23:59:59 dan panggilan berikutnya pada 00:00:00.sumber
daripada menggunakan waktu coba timedelta:
sumber
datetime.time
tidak mendukung ini, karena hampir tidak ada artinya mengurangi waktu dengan cara ini. Gunakan penuhdatetime.datetime
jika Anda ingin melakukan ini.sumber
datetime.time
objeka
danb
berasal dari hari yang sama, dan itub > a
, maka operasi tersebutb - a
memiliki arti yang sempurna.arctan(0) = (0, pi, 2pi, ...)
, tapi kami tidak peduli tentang nilai-nilai itu setelah yang pertama. Jadi,4:00 - 20:00
adalah8:00
- itu juga (32:00
,56:00
, ...), tapi siapa yang peduli?Anda memiliki dua objek datetime.time jadi untuk itu Anda cukup membuat dua timedelta menggunakan datetime.timedetla dan kemudian mengurangi seperti yang Anda lakukan sekarang menggunakan operand "-". Berikut contoh cara pengurangan dua kali tanpa menggunakan datetime.
perbedaan_delta adalah perbedaan Anda yang dapat Anda gunakan untuk alasan Anda.
sumber
datetime.min + delta
Pustaka timedelta python harus melakukan apa yang Anda butuhkan. A
timedelta
dikembalikan saat Anda mengurangi duadatetime
contoh.sumber
sumber
datetime.time
tidak bisa melakukannya - Tapi Anda bisa menggunakandatetime.datetime.now()
sumber
Saya memiliki situasi yang sama seperti Anda dan saya berakhir dengan menggunakan perpustakaan eksternal yang disebut panah .
Seperti inilah tampilannya:
sumber