Python:从 `datetime.datetime` 转换为 `time.time`

Posted

技术标签:

【中文标题】Python:从 `datetime.datetime` 转换为 `time.time`【英文标题】:Python: Converting from `datetime.datetime` to `time.time` 【发布时间】:2011-12-22 18:10:29 【问题描述】:

在 Python 中,如何将 datetime.datetime 转换为可以从 time.time 函数获得的 float

【问题讨论】:

相关:Converting datetime.date to UTC timestamp in Python 【参考方案1】:

给定一个datetime.datetime 对象dt,你可以使用

(dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()

例子:

>>> dt = datetime.datetime.now(); t = time.time()
>>> t
1320516581.727343
>>> (dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
1320516581.727296

请注意,timedelta.total_seconds() 方法是在 Python 2.7 中引入的。

【讨论】:

((24*3600*td.days + td.seconds)*1000000 + td.microseconds)/1e6 在 Python 上 【参考方案2】:

datetime.timetuple()time.mktime() 的组合:

>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())

【讨论】:

这会减少亚秒级的时间。 +1 因为这个答案无论如何都是有帮助的,并且反对票是不合理的。 我个人更喜欢一个很好的答案而不是 4 个好的答案,至少在软件方面是这样。但对每个人来说都是他自己的。 加强 Ram 的评论:在隐藏细微错误的同时看起来大部分正确的答案具有负面价值。【参考方案3】:
time.mktime(dt_obj.timetuple())

应该做的伎俩。

【讨论】:

这会减少亚秒级的时间。 +1 因为这个答案无论如何都是有帮助的,并且反对票是不合理的。【参考方案4】:

使用时间元组方法并不难,仍然保留微秒:

>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)

>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496

【讨论】:

你能解释一下为什么这个解决方案比(dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()更好吗?手动添加微秒对我来说似乎不合适。 @RamRachum:您的公式假定 dt 是 UTC 时间。 mktime() 假定输入是本地时间。除非您想立即显示它们,否则您应该避免使用代表本地时间的简单日期时间对象。请改用 UTC 时间或可识别时区的日期时间对象。【参考方案5】:

我知道这是一个老问题,但在 python 3.3+ 中,现在有一种更简单的方法可以使用 datetime.timestamp() 方法:

from datetime import datetime
timestamp = datetime.now().timestamp()

【讨论】:

timestamp = time.time() 这将处理这种特定情况(查找当前时间戳),但使用datetime.timestamp() 更强大,因为它允许您在任意日期时间查找时间戳。 那么提供一个更好的例子。因为.now().timestamp() 严格来说比time.time() 差。前者可能会在 DST 转换期间产生错误的结果。一个更好的例子:.now(utc).timestamp()(至少,它产生了正确的结果)。

以上是关于Python:从 `datetime.datetime` 转换为 `time.time`的主要内容,如果未能解决你的问题,请参考以下文章

datetime shutil xml collections模块

python构造数据1_column.py

使用 Python 发送电子邮件

Python 从入门到精通推荐看哪些书籍呢?

Python从入门到精通— 初识Python

Python从入门到精通— 初识Python