问题:如何将time.struct_time对象转换为datetime对象?
如何将Python time.struct_time
对象转换为datetime.datetime
对象?
我有一个提供第一个库的图书馆,一个提供第二个库的图书馆。
回答 0
使用time.mktime()将时间元组(以本地时间表示)转换为自大纪元以来的秒数,然后使用datetime.fromtimestamp()获得datetime对象。
from datetime import datetime
from time import mktime
dt = datetime.fromtimestamp(mktime(struct))
回答 1
像这样:
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
回答 2
这不是您问题的直接答案(已经很好回答了)。但是,由于有几次时间在我的基础上咬了我一口,所以我不能过分强调,您应该仔细查看一下time.struct_time对象提供的内容,而不是其他时间字段可能提供的内容。
假设您同时拥有一个time.struct_time对象和其他一些日期/时间字符串,则将两者进行比较,并确保您不会丢失数据并无意中创建了一个简单的datetime对象,否则您可以这样做。
例如,出色的feedparser模块将返回一个“ published”字段,并可能在其“ 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
然后,可以使用可识别时区的datetime对象将所有时间标准化为UTC或任何您认为很棒的东西。