NOTE -- À partir de 2020, vous ne devriez pas utiliser .utcnow()
o .utcfromtimestamp(xxx)
. Comme vous êtes probablement passé à python3, vous devriez utiliser des objets datetime tenant compte des fuseaux horaires.
>>> from datetime import timezone
>>>
>>> # alternative to '.utcnow()'
>>> dt_now = datetime.datetime.now(datetime.timezone.utc)
>>>
>>> # alternative to '.utcfromtimestamp()'
>>> dt_ts = datetime.fromtimestamp(1571595618.0, tz=timezone.utc)
pour les détails, voir : voir : https://blog.ganssle.io/articles/2019/11/utcnow.html
réponse originale (de 2010) :
Le module datetime utcnow() peut être utilisée pour obtenir l'heure UTC actuelle.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Comme le lien mentionné ci-dessus par Tom : http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ dit :
UTC est un fuseau horaire sans heure d'été et toujours un fuseau horaire sans changement de configuration dans le passé.
Toujours mesurer et stocker le temps en UTC .
Si vous devez enregistrer le lieu où le temps a été pris, stockez-le séparément. Ne pas stocker l'heure locale + les informations sur le fuseau horaire !
NOTE - Si l'une de vos données se trouve dans une région qui utilise l'heure d'été, utilisez la méthode suivante pytz
et jetez un coup d'oeil à la réponse de John Millikin.
Si vous voulez obtenir l'heure UTC à partir d'une chaîne de caractères donnée et que vous avez la chance de vous trouver dans une région du monde qui n'utilise pas l'heure d'été, ou que vous avez des données qui sont seulement décalées par rapport à l'heure UTC sans application de l'heure d'été :
--> en utilisant l'heure locale comme base pour la valeur de décalage :
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
--> Ou, à partir d'un décalage connu, en utilisant datetime.timedelta() :
>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
UPDATE :
Depuis python 3.2 datetime.timezone
est disponible. Vous pouvez générer un objet datetime avec fuseau horaire en utilisant la commande ci-dessous :
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Si vous êtes prêt à vous attaquer aux conversions de fuseaux horaires, lisez ceci :
https://medium.com/@eleroy/10-choses-que-vous-devez-savoir-sur-la-date-et-le-temps-dans-python-avec-le-temps-date-pytz-dateutil-timedelta-309bfbafb3f7
1 votes
Sachez que la méthode mktime() prend en entrée une "heure locale" qui peut ne pas correspondre à ce que vous attendez, je l'ai utilisé et cela a tout gâché. Jetez un coup d'œil à ce lien
1 votes
À l'envers : Comment convertir une date python utc en une date locale en utilisant uniquement la bibliothèque standard de python ?