Rumah > Soal Jawab > teks badan
import datetime
now = datetime.datetime.utcnow()
这个now如何转成时间戳。。
用time.mktime(now.timetuple())这个方法产生的时间戳比time.time()产生的时间戳少28800秒,
现在我的方法是手动加上28800秒产生时间戳,,有没有更好的方法
PHP中文网2017-04-18 09:05:02
Sebenarnya, penyoal di sini salah faham maksud mktime
Mari kita lihat dokumentasi rasmi python:
time.mktime(t)
Ini ialah fungsi songsang localtime(). Hujahnya ialah struct_time atau 9-tuple penuh (memandangkan bendera dst diperlukan; gunakan -1 sebagai bendera dst). jika ia tidak diketahui) yang menyatakan masa dalam waktu tempatan, bukan UTC Ia mengembalikan nombor titik terapung, untuk keserasian dengan masa(). sama ada OverflowError atau ValueError akan dinaikkan (yang bergantung pada sama ada nilai yang tidak sah ditangkap oleh Python atau pustaka C yang mendasarinya. Tarikh paling awal ia boleh menjana masa bergantung pada platform.
mktime
hendaklah melepasi waktu tempatan, bukan waktu utc, jadi jika anda ingin mendapatkan cap waktu masa utc yang ditentukan, kaedah yang lebih mudah ialah:
Tolak langsung masa mula cap waktu Unix, iaitu,
timestamp = (now - datetime(1970, 1, 1)).total_seconds()
Tukar kepada waktu tempatan
now = datetime.datetime.now()
timestamp = time.mktime(now.timetuple())
Sudah tentu, terdapat banyak kaedah. Ini hanya dua kaedah yang lebih mudah difahami. Jika anda ingin mengetahui lebih lanjut, berikut ialah pautan untuk rujukan anda: Menukar datetime.date kepada cap waktu UTC dalam Python
伊谢尔伦2017-04-18 09:05:02
@yylucifer Baik kata. Masalah utama ialah penukaran zon waktu.
Untuk masalah anda, anda boleh menggunakan kaedah berikut
# 基本上相等,但是会由于计算的耗时导致无法完全相等
# time.timezone:The offset of the local (non-DST) timezone, in seconds west of UTC
time.mktime(datetime.datetime.utcnow().timetuple()) == time.time() + time.timezone