How do you convert a time.struct_time object into a datetime object?
This is not a direct answer to your question (which was answered pretty well already). However, having had times bite me on the fundament several times, I cannot stress enough that it would behoove you to look closely at what your time.struct_time object is providing, vs. what other time fields may have.
Assuming you have both a time.struct_time object, and some other date/time string, compare the two, and be sure you are not losing data and inadvertently creating a naive datetime object, when you can do otherwise.
For example, the excellent feedparser module will return a "published" field and may return a time.struct_time object in its "published_parsed" field:
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)
Now note what you actually get with the "published" field.
Mon, 09 Sep 2013 19:57:42 -0400
By Stallman's Beard! Timezone information!
In this case, the lazy man might want to use the excellent dateutil module to keep the timezone information:
from dateutil import parserdt = parser.parse(entry["published"])print "published", entry["published"])print "dt", dtprint "utcoffset", dt.utcoffset()print "tzinfo", dt.tzinfoprint "dst", dt.dst()
which gives us:
published Mon, 09 Sep 2013 19:57:42 -0400dt 2013-09-09 19:57:42-04:00utcoffset -1 day, 20:00:00tzinfo tzoffset(None, -14400)dst 0:00:00
One could then use the timezone-aware datetime object to normalize all time to UTC or whatever you think is awesome.