269 votes

Convertir une date python en époque avec strftime

J'ai un temps en UTC à partir duquel je veux le nombre de secondes depuis l'époque.

J'utilise strftime pour le convertir en nombre de secondes. Prenons l'exemple du 1er avril 2012.

>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

Le 1er avril 2012, l'UTC de l'époque est 1333238400 mais l'exemple ci-dessus renvoie 1333234800, ce qui est différent d'une heure.

Il semble donc que strftime prenne en compte l'heure de mon système et applique un décalage de fuseau horaire quelque part. Je pensais que datetime était purement naïf ?

Comment puis-je contourner ce problème ? Si possible, éviter d'importer d'autres bibliothèques, sauf si elles sont standard. (J'ai des soucis de portabilité).

0 votes

15 votes

Suis-je le seul à remarquer que vous utilisez des littéraux octaux dans les chiffres ?

4voto

Moobie Points 609

Pour une solution explicite indépendante du fuseau horaire, utilisez la bibliothèque pytz.

import datetime
import pytz

pytz.utc.localize(datetime.datetime(2012,4,1,0,0), is_dst=False).timestamp()

Sortie (float) : 1333238400.0

3voto

Luis Pollo Points 31

Cela fonctionne dans Python 2 et 3 :

>>> import time
>>> import calendar
>>> calendar.timegm(time.gmtime())
1504917998

En suivant les documents officiels... https://docs.python.org/2/library/time.html#module-time

0voto

Trying2Learn Points 11

Dans Python 3.7

Retourne une date correspondant à une chaîne de date dans l'un des formats émis par date. émis par date.isoformat() et datetime.isoformat(). Plus précisément, cette fonction prend en charge les chaînes de caractères dans les formats suivants YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]], where * peut correspondre à n'importe quel caractère unique.

https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X