Python - calendrier.timegm() en fonction du temps.mktime()

j'ai du mal à comprendre.

Quelle est la différence entre calendar.timegm() et time.mktime() ?

dites que j'ai un datetime.datetime sans tzinfo Attaché, les deux ne devraient-ils pas donner le même résultat? Ne donnent-ils pas tous les deux le nombre de secondes entre l'époque et la date passée comme paramètre? Et puisque la date passée n'a pas de tzinfo, ce n'est pas le même nombre de secondes?

>>> import calendar
>>> import time
>>> import datetime
>>> d = datetime.datetime(2010, 10, 10)
>>> calendar.timegm(d.timetuple())
1286668800
>>> time.mktime(d.timetuple())
1286640000.0
>>> 
53
demandé sur ibz 2010-06-02 14:42:53

2 réponses

time.mktime() suppose que le tuple passé est à l'heure locale, calendar.timegm() suppose que C'est en GMT/UTC. Selon l'interprétation le tuple représente un temps différent, de sorte que les fonctions renvoient des valeurs différentes (secondes depuis l'époque sont basées sur UTC).

la différence entre les valeurs doit être égale au décalage du fuseau horaire de votre fuseau horaire local.

87
répondu sth 2011-12-31 22:35:56

calendar.timegm convertit UTC timestamp time.mktime convertit local pas le temps UTC .

8 heures de différence dans leurs résultats correspond exactement au fuseau horaire de votre emplacement.

8
répondu SilentGhost 2010-06-02 11:00:38