Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从'datetime.datetime'转换为'time.time'`_Python_Time_Calendar - Fatal编程技术网

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

Python:从'datetime.datetime'转换为'time.time'`,python,time,calendar,Python,Time,Calendar,在Python中,如何将datetime.datetime转换为从time.time函数中获得的float (dt - datetime.datetime.utcfromtimestamp(0)).total_seconds() 例如: >>> dt = datetime.datetime.now(); t = time.time() >>> t 1320516581.727343 >>> (dt - datetime.datetime.u

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

(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中引入的。

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


应该可以做到这一点。

使用时间元组方法并保持微秒并不难:

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

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

我知道这是一个老问题,但在python 3.3+中,现在有一种更简单的方法可以使用以下方法来实现:


这会减少次秒部分的时间。+1因为这个答案无论如何都是有帮助的,否决票是不合理的。这会减少次秒部分的时间。+1因为这个答案无论如何都是有帮助的,否决票是不合理的。我个人更喜欢一个好答案而不是4个好答案,至少在软件方面。但每个人都有自己的看法。为了加强Ram的评论:一个在隐藏细微错误时看起来基本正确的答案具有负面价值。
((24*3600*td.days+td.seconds)*1000000+td.microseconds)/1e6
在Python上你能解释为什么这个解决方案比
(dt-datetime.datetime.utcfromtimestamp(0)).total_seconds()更好吗?手动添加微秒对我来说似乎不雅观。@RamRachum:你的公式假设
dt
是UTC时间
mktime()
假定输入是本地时间。除非要立即显示,否则应避免使用表示本地时间的原始datetime对象。请改用UTC时间或时区感知的日期时间对象。
timestamp=time.time()
可以处理此特定情况(查找当前时间戳),但使用
datetime.timestamp()
功能更强大,因为它允许您在任意日期时间查找时间戳。请提供一个更好的示例。因为
.now().timestamp()
time.time()
更糟糕。前者可能在DST转换期间产生错误的结果。一个更好的示例:
.now(utc).timestamp()
(至少,它会产生正确的结果)。相关:
time.mktime(dt_obj.timetuple())
>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)

>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496
from datetime import datetime
timestamp = datetime.now().timestamp()