gpt4 book ai didi

python - 如何在Python中获得真正的三位数微秒?

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:51 27 4
gpt4 key购买 nike

我正在尝试增加时间。

我想要获得这样的小时格式: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中)的东西。

最佳答案

至于加法,您可以使用 timedelta 对象向 datetime 对象添加 500 毫秒:

from datetime import datetime, timedelta
t1 = datetime.utcnow()
t2 = t1 + timedelta(milliseconds=500)

因此,只要您使用 datetime 对象而不是字符串,您就可以轻松执行您想要的所有时间操作。

所以我们剩下的问题是如何格式化要显示的时间。

正如您所指出的,[:-3]-技巧似乎是常见的解决方案,在我看来它应该可以正常工作。如果您确实关心正确舍入到最接近的舍入毫秒,则可以使用以下“舍入技巧”:

您过去一定见过这个技巧,对于 float :

def round(x):
return int(x + 0.5)

同样的想法(即添加 0.5)也可以应用于日期时间:

def format_dt(t):
tr = t + timedelta(milliseconds=0.5)
return tr.strftime('%H:%M:%S,%f')[:-3]

关于python - 如何在Python中获得真正的三位数微秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com