datetime.datetime.fromtimestamp()
benar, kecuali Anda mungkin memiliki stempel waktu dalam milidetik (seperti dalam JavaScript), tetapi fromtimestamp()
mengharapkan cap waktu Unix, dalam hitungan detik.
Lakukan seperti itu:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
dan hasilnya adalah:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Apakah itu menjawab pertanyaan Anda?
EDIT : JF Sebastian dengan benar menyarankan untuk menggunakan pembagian sejati dengan 1e3
(float 1000
). Perbedaannya signifikan, jika Anda ingin mendapatkan hasil yang tepat, maka saya mengubah jawaban saya. Perbedaan hasil dari perilaku default Python 2.x, yang selalu kembali int
ketika membagi (menggunakan /
operator) int
dengan int
(ini disebut pembagian lantai ). Dengan mengganti pembagi 1000
(menjadi int
) dengan 1e3
pembagi (menjadi representasi 1000
sebagai pelampung) atau dengan float(1000)
(atau 1000.
dll.), Pembagian menjadi pembagian yang benar . Python 2.x kembali float
saat membaginya int
dengan float
, float
oleh int
,float
olehfloat
dll. Dan ketika ada beberapa bagian fraksional di stempel waktu yang dilewati ke fromtimestamp()
metode, hasil metode ini juga berisi informasi tentang bagian fraksional itu (seperti jumlah mikrodetik).
/ 1e3
x * 0.001
danx / 1e3
keduanya sama, perbedaannya adalah dalam notasi dan panjang (yang asli lebih pendek). Untuk beberapa orang mungkin lebih jelas untuk benar-benar membagi dengan angka daripada mengalikan dengan angka terbalik multiplikatif (1/x
), yang Anda usulkan. Tetapi terima kasih telah mengusulkan pendekatan alternatif.fromtimestamp
memberi Anda tanggal dan waktu dalam waktu setempatutcfromtimestamp
memberi Anda tanggal dan waktu dalam UTC.