Maison > Questions et réponses > le corps du texte
import datetime
now = datetime.datetime.utcnow()
这个now如何转成时间戳。。
用time.mktime(now.timetuple())这个方法产生的时间戳比time.time()产生的时间戳少28800秒,
现在我的方法是手动加上28800秒产生时间戳,,有没有更好的方法
PHP中文网2017-04-18 09:05:02
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 :
Soustrayez directement l'heure de début de l'horodatage Unix, c'est-à-dire
timestamp = (now - datetime(1970, 1, 1)).total_seconds()
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
伊谢尔伦2017-04-18 09:05:02
@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