如何将一个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_parsed”字段中返回一个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或任何你认为是真棒。