Perbedaan antara modul waktu dat Python vs waktu


137

Saya mencoba untuk mencari tahu perbedaan antara datetimedan timemodul, dan apa yang masing-masing harus digunakan untuk.

Saya tahu itu datetimememberikan tanggal dan waktu. Apa gunanya timemodul?

Contoh akan dihargai dan perbedaan mengenai zona waktu akan sangat menarik.

Jawaban:


102

yang timemodul terutama untuk bekerja dengan waktu perangko unix; dinyatakan sebagai angka floating point diambil menjadi detik sejak zaman unix. yang datetimemodul dapat mendukung banyak operasi yang sama, tetapi menyediakan satu set berorientasi objek lebih dari jenis, dan juga memiliki beberapa dukungan terbatas untuk zona waktu.


22
Selanjutnya, apa perbedaan antara timedan datetime.time?
SparkAndShine

Akan lebih baik untuk detail properti seperti jika itu realtime / monoton. Seperti pada standar POSIX yang Anda miliki: CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_THREAD, dll ... Pada jam POSIX lihat: stackoverflow.com/questions/3523442/…
Vajk Hermecz

12

Tetap gunakan untuk timemencegah ambiguitas DST.

Gunakan secara eksklusif timemodul sistem alih-alih datetimemodul untuk mencegah masalah ambiguitas dengan daylight saving time (DST) .

Konversi ke format waktu apa pun, termasuk waktu setempat, cukup mudah:

import time
t = time.time()

time.strftime('%Y-%m-%d %H:%M %Z', time.localtime(t))
'2019-05-27 12:03 CEST'

time.strftime('%Y-%m-%d %H:%M %Z', time.gmtime(t))
'2019-05-27 10:03 GMT'

time.time()adalah angka floating point yang mewakili waktu dalam detik sejak zaman sistem. time.time()sangat ideal untuk stamping waktu yang jelas.

Jika sistem juga menjalankan protokol waktu jaringan (NTP) protokol , seseorang berakhir dengan basis waktu yang cukup solid.

Berikut adalah dokumentasi dari timemodul.


Dalam contoh Anda, Anda menggunakan time.localtime(), yang tentu saja DST telah dipanggang. Jika kita ingin menjadi purist, bukankah seharusnya kita menggunakan time.gmtime()sebagai gantinya? :)
Seamus

@ Seamus Cukup menguji kedua perintah di ipythonacara yang time.gmtime()menghasilkan tuple, sedangkan time.time()memberikan waktu zaman UNIX sebagai nilai desimal tunggal detik berlalu sejak 00:00:00 UTC, Kamis, 1 Januari 1970. Fungsi time.localtime(t)mengubah waktu zaman ke lokal waktu tuple. Jadi, jawaban untuk pertanyaan Anda adalah «tidak».
Serge Stroobandt

Apakah ada cara untuk menambahkan hari ke objek waktu? dengan datetime ada metode timedelta (hari = 6).
Nehemias Herrera

@NehemiasHerrera t = time.time()adalah angka floating point yang mewakili waktu dalam detik sejak zaman sistem. Oleh karena itu, seseorang dapat menambahkan atau mengurangi 86400 detik untuk setiap hari; t += 86400
Serge Stroobandt

5

Modul waktu dapat digunakan ketika Anda hanya perlu waktu catatan tertentu - seperti katakanlah Anda memiliki tabel / file terpisah untuk transaksi untuk setiap hari, maka Anda hanya perlu waktu. Namun tipe data waktu biasanya digunakan untuk menyimpan perbedaan waktu antara 2 titik waktu.

Ini juga dapat dilakukan dengan menggunakan datetime, tetapi jika kita hanya berurusan dengan waktu untuk hari tertentu, maka modul waktu dapat digunakan.

Datetime digunakan untuk menyimpan data dan waktu tertentu untuk catatan. Seperti di agen penyewaan. Tanggal jatuh tempo akan menjadi datatype datetime.


3

Jika Anda tertarik dengan zona waktu, Anda harus mempertimbangkan penggunaan pytz.


8
sepertinya dia paling tertarik pada waktu dan modul waktu dan perbedaan zona waktu di antara mereka. dengan segala hormat, membawa ketergantungan lain ke dalam ini cukup banyak tidak relevan.
sbartell

3
Dukungan zona waktu baik dalam modul waktu dan waktu benar-benar sangat buruk ... jika dia benar-benar tertarik dalam menangani zona waktu dengan cara yang bermanfaat maka dia benar-benar harus tahu tentang pytz. Anda membawa dependensi untuk menyelesaikan masalah yang dependensi Anda saat ini tidak membantu Anda menyelesaikan masalah Anda ...
donkopotamus
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.