Saya memiliki perbedaan waktu
time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1
Sekarang, bagaimana cara menemukan jumlah detik yang berlalu? diff.seconds
tidak menghitung hari. Saya bisa melakukan:
diff.seconds + diff.days * 24 * 3600
Apakah ada metode bawaan untuk ini?
time1
, dandiff
dalam kode Anda. Untuk mendapatkan waktu utc saat ini sebagai objek datetime naif, gunakandatetime.utcnow()
saja. Untuk memahami mengapa Anda harus menggunakan UTC alih-alih waktu setempat untuk menemukan perbedaannya, lihat Cari apakah 24 jam telah lewat di antara waktu-waktu - Python .time.monotonic()
bisa lebih baik untuk menemukan waktu yang berlalu antara acara (bukantime.time()
ataudatetime.utcnow()
).Jawaban:
Gunakan
timedelta.total_seconds()
.sumber
Anda memiliki masalah dengan satu atau lain cara
datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
ekspresi .(1) Jika yang Anda butuhkan adalah perbedaan antara dua instance dalam hitungan detik, yang paling sederhana
time.time()
adalah pekerjaannya.(2) Jika Anda menggunakan stempel waktu untuk tujuan lain, Anda perlu mempertimbangkan apa yang Anda lakukan, karena hasilnya memiliki bau besar di atasnya:
gmtime()
mengembalikan tuple waktu dalam UTC tetapimktime()
mengharapkan tuple waktu dalam waktu lokal.Saya di Melbourne, Australia di mana TZ standarnya adalah UTC + 10, tetapi penghematan siang hari masih berlaku sampai besok pagi sehingga UTC + 11. Ketika saya mengeksekusi berikut, itu adalah 2011-04-02T20: 31 waktu setempat di sini ... UTC adalah 2011-04-02T09: 31
Anda akan melihat bahwa t3, hasil dari ekspresi Anda adalah UTC + 1, yang tampaknya menjadi UTC + (perbedaan DST lokal saya) ... tidak terlalu berarti. Anda harus mempertimbangkan untuk menggunakan
datetime.datetime.utcnow()
yang tidak akan melompat satu jam ketika DST menyala / mati dan dapat memberikan Anda lebih presisi daripadatime.time()
sumber
Anda dapat menggunakan modul mx.DateTime
sumber