我正在尝试增加时间。
我想获得这样的小时格式:(13:30:45,123
在Java中:)"HH:mm:ss,SSS"
,但是Python显示13:30:45,123456
("%H:%M:%S,%f"
)(6位微秒)。
我在网上阅读,发现了可能的解决方案,例如:
from datetime import datetime
hour = datetime.utcnow().strftime('%H:%M:%S,%f')[:-3]
print(hour)
输出为: 04:33:16,123
但这是一个不好的解决方案,因为如果以小时为例01:49:56,020706
,例如:,输出为:01:49:56,020
,则右边应为:(01:49:56,021
四舍五入)。
真正的目的是,如果我增加毫秒,甚至达到舍入秒数。
示例:(我想增加500微秒)
如果输入:00:01:48,557
,则输出应为:00:01:49,057
Java程序的代码(运行良好)是:
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss,SSS");
System.out.print("Input the time: ");
t1 = in.next();
Date d = df.parse(t1);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.MILLISECOND, 500);//here increase the milliseconds (microseconds)
t2 = df.format(cal.getTime());
System.out.print("The Output (+500): "+t2);
我不知道Python中是否存在类似SimpleDateFormat
(在Java中)的东西。
至于另外,您可以添加500毫秒到你的datetime
对象,使用timedelta
对象:
from datetime import datetime, timedelta
t1 = datetime.utcnow()
t2 = t1 + timedelta(milliseconds=500)
因此,只要使用datetime
对象而不是字符串,就可以轻松地进行所有需要的时间操作。
因此,我们剩下的问题是如何格式化要显示的时间。
正如您所指出的,[:-3]
-trick似乎是常见的解决方案,在我看来,它应该可以正常工作。如果您确实关心正确舍入到最接近的舍入毫秒,则可以使用以下“舍入技巧”:
您一定已经看过用于浮动的技巧:
def round(x):
return int(x + 0.5)
相同的想法(即加0.5)也可以应用于datetime
s:
def format_dt(t):
tr = t + timedelta(milliseconds=0.5)
return tr.strftime('%H:%M:%S,%f')[:-3]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句