The time
modul dapat diinisialisasi menggunakan detik sejak zaman:
>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)
Apakah ada cara yang elegan untuk menginisialisasi datetime.datetime
objek dengan cara yang sama?
Jawaban:
datetime.datetime.fromtimestamp
akan dilakukan, jika Anda mengetahui zona waktu, Anda dapat menghasilkan output yang sama dengantime.gmtime
atau
sumber
datetime.utcfromtimestamp
membuat cap waktu naif. Saya harusimport pytz
dan gunakandatetime.fromtimestamp(1423524051, pytz.utc)
untuk membuat datetime sadar.pytz
perpustakaan jika Anda hanya ingin cap waktu UTC - Anda hanya perlufrom datetime import datetime, timezone
dan kemudian menyebutnya sebagai berikut:datetime.fromtimestamp(1423524051, timezone.utc)
. Ini telah menyimpan perpustakaan ekstra berkali-kali ketika saya hanya membutuhkan zona waktu UTC daripytz
.Detik sejak zaman
datetime
kestrftime
:sumber
Dari dokumen, cara yang disarankan untuk mendapatkan objek waktu-sadar datetime dari detik sejak zaman adalah:
Python 3 :
Python 2 , menggunakan
pytz
:sumber
pytz
hanya perlu mendapatkanutc
objek tzinfo. Sangat mudah untuk membuatnya sendiriPerhatikan bahwa datetime.datetime. fromtimestamp (timestamp) dan. utcfromtimestamp (timestamp) gagal pada windows untuk tanggal sebelum 1 Januari 1970 sedangkan cap waktu unix negatif tampaknya berfungsi pada platform berbasis unix. Dokumen mengatakan ini:
Lihat juga Issue1646728
sumber
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, untuk mengatasinya.