python中datetime类型的utc时间如何转成时间戳?
PHPz
PHPz 2017-04-18 09:03:02
0
3
608

import datetime

now = datetime.datetime.utcnow()
这个now如何转成时间戳。。
用time.mktime(now.timetuple())这个方法产生的时间戳比time.time()产生的时间戳少28800秒,
现在我的方法是手动加上28800秒产生时间戳,,有没有更好的方法

PHPz
PHPz

学习是最好的投资!

membalas semua(3)
黄舟
import calendar
calendar.timegm(utc_timetuple)
Ty80

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:

  1. Tolak langsung masa mula cap waktu Unix, iaitu,

timestamp = (now - datetime(1970, 1, 1)).total_seconds()
  1. 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

伊谢尔伦

@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 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan