如何将一个Python time.struct_time对象转换为一个date时间对象?

如何将一个Python time.struct_time对象转换为一个datetime.datetime对象?

我有一个图书馆,提供第一个和第二个图书馆,希望第二个…

使用time.mktime()将时间元组( 本地时间)转换为自Epoch以来的秒数,然后使用datetime.fromtimestamp()获取date时间对象。

 from time import mktime from datetime import datetime dt = datetime.fromtimestamp(mktime(struct)) 

喜欢这个:

 >>> structTime = time.localtime() >>> datetime.datetime(*structTime[:6]) datetime.datetime(2009, 11, 8, 20, 32, 35) 

这不是对你的问题的直接回答(已经很好地回答了)。 然而,有几次在基础上多次咬我,我不能强调,你应该仔细观察你的time.struct_time对象提供什么,而其他时间字段可能有什么。

假设你有一个time.struct_time对象和一些其他的date/时间string,比较这两个,并确保你不会失去数据和无意中创build一个天真的date时间对象,否则。

例如,优秀的feedparser模块将返回一个“发布”字段,并可能在其“published_pa​​rsed”字段中返回一个time.struct_time对象:

 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) 

现在注意你实际得到的“发布”字段。

 Mon, 09 Sep 2013 19:57:42 -0400 

斯托曼的胡子! 时区信息!

在这种情况下,懒惰的人可能想要使用优秀的dateutil模块来保持时区信息:

 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() 

这给了我们:

 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 

然后,人们可以使用时区感知的date时间对象标准化所有的时间UTC或任何你认为是真棒。