Bagaimana cara mengetahui perbedaan waktu dalam menit antara dua datetime
objek?
python
datetime
date-arithmetic
Hobhouse
sumber
sumber
delorean
misrepresentsdatetime
,pytz
approach eg, contoh kode memulai dapat ditulis sebagaid = datetime.now(timezone(EST))
(satu baris yang dapat dibaca alih-alih lima).Baru di Python 2.7 adalah
timedelta
metode contoh.total_seconds()
. Dari dokumen Python, ini setara dengan(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.Referensi: http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
sumber
elapsedTime / timedelta(minutes=1)
untuk mendapatkan perbedaan dalam hitungan menit dalam Python 3Menggunakan contoh datetime
Durasi bertahun-tahun
Durasi dalam beberapa hari
Durasi dalam hitungan jam
Durasi dalam hitungan menit
Durasi dalam hitungan detik
Durasi dalam mikrodetik
Total durasi antara kedua tanggal
atau hanya:
Sunting 2019 Karena jawaban ini mendapatkan daya tarik, saya akan menambahkan fungsi, yang mungkin menyederhanakan penggunaan untuk beberapa
sumber
TypeError: 'float' object is not subscriptable
then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Cukup kurangi satu dari yang lain. Anda mendapatkan
timedelta
objek dengan perbedaan.Anda dapat mengonversi
dd.days
,dd.seconds
dandd.microseconds
menjadi beberapa menit.sumber
Jika
a
,b
adalah objek datetime maka untuk menemukan perbedaan waktu di antara mereka dalam Python 3:Pada versi Python sebelumnya:
Jika
a
,b
adalah objek datetime naif seperti dikembalikan padadatetime.now()
saat itu maka hasilnya mungkin salah jika objek mewakili waktu lokal dengan offset UTC yang berbeda misalnya, sekitar transisi DST atau untuk tanggal masa lalu / masa depan. Lebih detail: Temukan apakah 24 jam telah lewat di antara waktu-waktu - Python .Untuk mendapatkan hasil yang andal, gunakan objek waktu-waktu UTC atau sadar zona waktu.
sumber
Gunakan divmod:
sumber
Ini adalah bagaimana saya mendapatkan jumlah jam yang berlalu antara dua objek datetime.datetime:
sumber
timedelta.seconds
hanya memberikan jumlah detik disimpan secara eksplisit - yang jaminan dokumentasi akan berjumlah kurang dari satu hari. Anda ingin(after - before).total_seconds()
, yang memberikan jumlah detik yang menjangkau seluruh delta.(after - before).total_seconds() // 3600
(Python 2.7) atau(after - before) // timedelta(seconds=3600)
(Python 3)Untuk hanya menemukan jumlah hari: timedelta memiliki atribut 'hari'. Anda bisa menanyakannya.
sumber
Hanya berpikir mungkin berguna untuk menyebutkan pemformatan juga dalam hal timedelta. strptime () mem-parsing string yang mewakili waktu sesuai dengan format.
Ini akan menampilkan: 0: 05: 00.518000
sumber
Saya menggunakan sesuatu seperti ini:
sumber
return t1-t2
ini untuk menemukan perbedaan antara waktu sekarang dan jam 9.30 pagi
sumber
Ini adalah pendekatan saya menggunakan mktime .
sumber
mktime()
mengharapkan waktu lokal sebagai input. Waktu setempat mungkin ambigu danmktime()
dapat mengembalikan jawaban yang salah dalam kasus ini. Gunakana - b
sebagai gantinya (a, b - objek waktu) .mktime()
tidak perlu dan kadang-kadang salah. Jangan menggunakannya dalam kasus ini.Dengan cara lain untuk mendapatkan perbedaan antara tanggal;
Jadi dapatkan output dalam Min.
Terima kasih
sumber
Saya telah menggunakan perbedaan waktu untuk pengujian integrasi berkelanjutan untuk memeriksa dan meningkatkan fungsi saya. Berikut adalah kode sederhana jika seseorang membutuhkannya
Menggunakan:
dan saya punya sesuatu seperti itu di log output
sumber
Berdasarkan jawaban hebat @Attaque , saya mengusulkan versi sederhana dari kalkulator perbedaan waktu:
Saya telah mengubahnya untuk menghindari mendeklarasikan fungsi berulang, menghapus interval default cetak cantik dan menambahkan dukungan untuk milidetik, minggu dan bulan ISO (bulan-bulan dalam pikiran hanya perkiraan, berdasarkan asumsi bahwa setiap bulan sama dengan
365/12
).Yang menghasilkan:
sumber