Python-以毫秒为单位的时间差对我不起作用
我读过一些关于这方面的帖子,认为我有一些代码可以工作。如果两个值之间的差值小于1秒,则显示的毫秒数是正确的 如果差值超过一秒,它仍然只显示毫秒的差值 如下 正确:Python-以毫秒为单位的时间差对我不起作用,python,Python,我读过一些关于这方面的帖子,认为我有一些代码可以工作。如果两个值之间的差值小于1秒,则显示的毫秒数是正确的 如果差值超过一秒,它仍然只显示毫秒的差值 如下 正确: now_wind 2013-08-25 08:43:04.776209 first_time_wind 2013-08-25 08:43:04.506301 time_diff 0:00:00.269908 diff 269 错误-应为2000+76?: now_wind 2013-08-25 08:43:25.6604
now_wind 2013-08-25 08:43:04.776209
first_time_wind 2013-08-25 08:43:04.506301
time_diff 0:00:00.269908
diff 269
错误-应为2000+76?:
now_wind 2013-08-25 08:43:25.660427
first_time_wind 2013-08-25 08:43:23.583902
time_diff 0:00:02.076525
diff 76
#!/usr/bin/env python
import datetime
import time
from time import sleep
first_time_wind = datetime.datetime.now()
sleep (2)
now_wind = datetime.datetime.now()
print "now_wind", now_wind
print "first_time_wind", first_time_wind
time_diff_wind = (now_wind - first_time_wind)
print "time_diff", time_diff_wind
print "diff", time_diff_wind.microseconds / 1000
从文件中: 实例属性(只读): 属性值 介于-999999999和999999999(含)之间的天数 0到86399(含)之间的秒数 0到0之间的微秒 9999999
微秒从不超过999999。因此,毫秒数永远不会超过999。来自文档: 实例属性(只读): 属性值 介于-999999999和999999999(含)之间的天数 0到86399(含)之间的秒数 0到0之间的微秒 9999999
微秒从不超过999999。因此,毫秒数永远不会超过999。请尝试使用总秒数方法:
print time_diff_wind.total_seconds() * 1000
该方法相当于:(td.microseconds+(td.seconds+td.days*24*3600)*10**6)/10**6
注意:它从2.7版开始提供
尝试使用total_seconds方法:
print time_diff_wind.total_seconds() * 1000
该方法相当于:(td.microseconds+(td.seconds+td.days*24*3600)*10**6)/10**6
注意:它从2.7版开始提供
你的微秒不包括已经过去的秒数
你的微秒不包括已经过去的秒数,我也遇到了这个问题,但在我的情况下,我需要真正的毫秒精度,因此使用
total_seconds()*1000
对我来说不是一个选项,所以我所做的是:
def millis_interval(start, end):
"""start and end are datetime instances"""
diff = end - start
millis = diff.days * 24 * 60 * 60 * 1000
millis += diff.seconds * 1000
millis += diff.microseconds / 1000
return millis
我希望这对其他人有帮助!:) 我也遇到了这个问题,但我需要真正的毫秒精度,所以使用
total_seconds()*1000
对我来说不是一个选项,所以我所做的是:
def millis_interval(start, end):
"""start and end are datetime instances"""
diff = end - start
millis = diff.days * 24 * 60 * 60 * 1000
millis += diff.seconds * 1000
millis += diff.microseconds / 1000
return millis
我希望这对其他人有帮助!:) 正确答案(2020年)是:
其他答案会失去准确性和/或更加冗长。正确答案(2020年)是:
其他答案会失去精度和/或更加冗长。我认为total_seconds()返回一个浮点数,并包含微秒,因此它确实保留毫秒精度,如果我错了,请更正。@Samuel这是自Python 2.7版以来的事实。请参阅:@Samuel只要总秒数不太大以致浮点丢失精度,则应首选
total_seconds()
方法。“大”是在中解释的,并且远远超过了人类的寿命,因此我想不出有多少应用程序需要十进制精度。@Samuel,但它不跟踪较长的时间跨度,如分钟、小时等,因此每当这些时间跨度重置为零时,就会得到错误的结果。我认为total_seconds()返回一个浮点数,并包括微秒,所以它确实保持毫秒精度,如果我错了,请纠正我。@Samuel这是自Python 2.7版以来的真实情况。请参阅:@Samuel只要总秒数不太大以致浮点丢失精度,则应首选total_seconds()
方法。“大”是在中解释的,并且远远超过了人类的寿命,因此我想不出有多少应用程序需要十进制精度。@Samuel,但它不跟踪较长的时间跨度,如分钟、小时等,因此每当这些时间跨度重置为零时,就会得到错误的结果。添加int(time\u diff\u wind.total\u seconds()*1000)
仅获取毫秒,否则,您仍将有一些十进制精度,如17215.996
addint(time_diff\u wind.total_seconds()*1000)
以获得毫秒,否则您仍将有一些十进制精度,如17215.996
。同样可以用于不同的单位:int(timedelta(天=1,毫秒=50)/timedelta(微秒=1))
int。同样可以用于不同的单位:int(timedelta(天=1,毫秒=50)/timedelta(微秒=1))