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
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
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 :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
Convertir en heure locale
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