Comment voulez-vous convertir un python time.struct_time
objet en datetime.datetime
objet? J'ai une bibliothèque qui fournit le premier et un deuxième bibliothèque qui veut que le second...
Réponses
Trop de publicités?L'utilisation du temps.mktime() pour convertir le temps tuple (localtime) en secondes depuis l'Epoch, puis utiliser datetime.fromtimestamp() pour obtenir l'objet datetime.
from time import mktime
from datetime import datetime
dt = datetime.fromtimestamp(mktime(struct))
Ce n'est pas une réponse directe à votre question (qui a été répondu assez bien ci-dessus). Cependant, ayant eu le temps de me mordre sur le fondement plusieurs fois, je ne peux pas insister assez sur le fait qu'il vous incombera à regarder de plus près à ce que votre temps.struct_time objet est de fournir, par opposition à ce que d'autres champs de l'heure peut avoir.
En supposant que vous avez à la fois une heure.struct_time objet, et quelques autres chaîne de date/heure, comparer les deux, et assurez-vous de ne pas perdre de données et, par inadvertance, la création d'un naïf objet datetime, quand on peut faire autrement.
Par exemple, l'excellent feedparser module sera de retour d'une "publié" sur le terrain et peut retourner une fois.struct_time objet dans son "published_parsed" champ:
time.struct_time(tm_year=2013, tm_mon=9, tm_mday=9, tm_hour=23, tm_min=57, tm_sec=42, tm_wday=0, tm_yday=252, tm_isdst=0)
Maintenant, notez ce que vous obtenez en fait avec le "publié" sur le terrain.
Mon, 09 Sep 2013 19:57:42 -0400
Par Stallman Barbe! Le fuseau horaire de l'info!
Dans ce cas, le paresseux pourrait vouloir utiliser l'excellent dateutil module de garder le fuseau horaire info:
from dateutil import parser
dt = parser.parse(entry["published"])
print "published", entry["published"])
print "dt", dt
print "utcoffset", dt.utcoffset()
print "tzinfo", dt.tzinfo
print "dst", dt.dst()
ce qui nous donne:
published Mon, 09 Sep 2013 19:57:42 -0400
dt 2013-09-09 19:57:42-04:00
utcoffset -1 day, 20:00:00
tzinfo tzoffset(None, -14400)
dst 0:00:00
On pourrait alors utiliser le fuseau horaire courant datetime objet de normaliser tous les temps UTC ou ce que vous pensez est génial.