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

import datetime

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

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
黄舟
import calendar
calendar.timegm(utc_timetuple)
Ty80

En fait, la personne qui a posé la question ici a mal compris le sens de mktime. Jetons un coup d'œil à la documentation officielle de Python :

.

time.mktime(t)
C'est la fonction inverse de localtime() Son argument est le struct_time ou le 9-tuple complet (puisque l'indicateur dst est nécessaire ; utilisez -1 comme indicateur dst). si elle est inconnue) qui exprime l'heure en heure locale, et non en UTC. Elle renvoie un nombre à virgule flottante, pour des raisons de compatibilité avec time(). Si la valeur d'entrée ne peut pas être représentée comme une heure valide, soit OverflowError ou ValueError sera déclenché (ce qui dépend si la valeur non valide est interceptée par Python ou par les bibliothèques C sous-jacentes. La date la plus ancienne pour laquelle elle peut générer une heure dépend de la plate-forme.

).

mktime doit transmettre l'heure locale, pas l'heure utc, donc si vous souhaitez obtenir l'horodatage de l'heure utc spécifiée, la méthode la plus simple est :

  1. Soustrayez directement l'heure de début de l'horodatage Unix, c'est-à-dire

timestamp = (now - datetime(1970, 1, 1)).total_seconds()
  1. Convertir en heure locale

now = datetime.datetime.now()
timestamp = time.mktime(now.timetuple())

Bien sûr, il existe de nombreuses méthodes. Voici seulement deux méthodes plus faciles à comprendre. Si vous souhaitez en savoir plus, voici un lien pour votre référence : Conversion de datetime.date en horodatage UTC en Python

伊谢尔伦

@yylucifer Bien dit. Le principal problème est la conversion du fuseau horaire.
Pour votre problème, vous pouvez utiliser la méthode suivante

# 基本上相等,但是会由于计算的耗时导致无法完全相等
# 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 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal