Maison > développement back-end > Tutoriel Python > Comment convertir correctement les objets de date Python en horodatages UTC ?

Comment convertir correctement les objets de date Python en horodatages UTC ?

Susan Sarandon
Libérer: 2024-12-15 08:50:10
original
777 Les gens l'ont consulté

How to Correctly Convert Python Date Objects to UTC Timestamps?

Conversion d'objets date en horodatages UTC en Python

Dans de nombreux scénarios, la gestion des dates et des heures en Python nécessite de les convertir en horodatages UTC pour une intégration transparente avec d’autres systèmes ou cadres fonctionnant en temps universel coordonné. Cependant, ce processus de conversion pourrait rencontrer des obstacles. Par exemple, l'extrait ci-dessous produit un résultat inattendu :

import datetime

d = datetime.date(2011, 01, 01)  # A date object
timestamp = datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))

print(timestamp)  # Output: datetime.datetime(2010, 12, 31, 23, 0)
Copier après la connexion

Le résultat attendu serait l'horodatage UTC du 1er janvier 2011, mais à la place, nous obtenons le 31 décembre 2010 à 23h00 UTC.

Explorons la solution à ce problème et comprenons comment obtenir les horodatages UTC corrects pour les objets date dans Python.

Gestion des objets date en UTC

L'objet date fourni d est un objet date Python natif représentant une date sans aucune information temporelle. Pour obtenir l'horodatage UTC correct, nous devons nous assurer que l'objet date est explicitement pris en compte dans le contexte UTC.

Voici deux méthodes pour y parvenir :

Option 1 : Utilisation de Calendar.timegm()

Cette approche suppose que l'objet date d est au format UTC fuseau horaire.

import calendar

timestamp = calendar.timegm(d.timetuple())

print(timestamp)  # Output: 1293840000
Copier après la connexion

La sortie est l'horodatage UTC correct pour le 1er janvier 2011 à 00h00.

Option 2 : Utiliser datetime.timestamp()

Cette option est disponible dans les versions Python 3.3 et ultérieures et nous oblige à spécifier explicitement le fuseau horaire UTC avant d'obtenir le horodatage.

from datetime import timezone

d_utc = d.replace(tzinfo=timezone.utc)  # Explicitly specify UTC timezone
timestamp = d_utc.timestamp()

print(timestamp)
Copier après la connexion

Le résultat est cohérent avec les approches précédentes.

Conversion d'objets Datetime en horodatages UTC

Si vous avez un objet datetime au lieu d'un objet date, le processus de conversion est légèrement différent. Vous pouvez utiliser les méthodes suivantes :

Python 3.3

timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
Copier après la connexion

Python 3 (< 3.3)

timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)
Copier après la connexion

Python 2

timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
Copier après la connexion

N'oubliez pas de vous méfier des problèmes potentiels de virgule flottante et assurez-vous de l'exactitude de vos horodatages.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal