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
>>>
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.
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.