运行此
import time
import datetime
timenow = time.time()
timedifference = time.time() - timenow
timedifference = datetime.timedelta( seconds=timedifference )
print( "%s" % timedifference )
我明白了:
0:00:00.000004
如何使用deltatime对象将微秒修整为2个十进制数字?
0:00:00.00
相关问题:
答案 0 :(得分:2)
另一种解决方案是将小数部分以数字方式拆分并单独格式化:
>>> seconds = 123.995
>>> isec, fsec = divmod(round(seconds*100), 100)
>>> "{}.{:02.0f}".format(timedelta(seconds=isec), fsec)
'0:02:04.00'
如您所见,这负责四舍五入。通过将上面的 100
更改为 10 的另一个幂(并调整格式字符串)也可以轻松调整输出精度:
def format_td(seconds, digits=2):
isec, fsec = divmod(round(seconds*10**digits), 10**digits)
return ("{}.{:0%d.0f}" % digits).format(timedelta(seconds=isec), fsec)
答案 1 :(得分:1)
使用str()
将时间差转换为字符串,然后使用.split('.')
在小数点的两侧分开。然后用[0]
将第一部分保留在小数点前:
您的示例与最后一行唯一的不同:
import time
import datetime
timenow = time.time()
timedifference = time.time() - timenow
timedifference = datetime.timedelta( seconds=timedifference )
print( "%s" % str(timedifference).split('.')[0] )
生成:
0:00:00
答案 2 :(得分:0)
您必须自行格式化。 timedelta
对象包含days
,seconds
和microseconds
,因此您必须进行数学运算以将其转换为天/小时/分钟/秒/微秒,然后使用python string.format
。对于您的微秒,您将希望((microsec+5000)/10000)
获得前两位数字(+5000用于四舍五入)。