如何转换Python时间。对象转换为datetime对象。datetime对象?

我有一个提供第一个的库,还有一个需要第二个的库。


当前回答

是这样的:

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

其他回答

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

from datetime import datetime
from time import mktime

dt = datetime.fromtimestamp(mktime(struct))

是这样的:

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

这不是对你的问题的直接回答(你的问题已经回答得很好了)。然而,在经历了几次严重的打击之后,我再怎么强调也不为过,你应该密切关注你的时间。Struct_time对象提供的,与其他时间字段可能拥有的。

假设你两者都有时间。Struct_time对象和一些其他日期/时间字符串,比较这两个对象,并确保您没有丢失数据并无意中创建一个天真的datetime对象,如果您可以这样做的话。

例如,优秀的feedparser模块将返回一个“published”字段,并可能返回一个时间。Struct_time对象的"published_parsed"字段:

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

现在注意从“published”字段中实际得到了什么。

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或任何您认为很棒的时间。