如何在python中获取两位数00.00.00的小时格式?

问题描述

以下是我在其中一个应用程序中使用的示例代码。我希望默认小时格式为00(例如02:30:35),在这里我得到的是0:00:03.011445,所以我在使用strftime,但在那里又遇到了另一个异常。请指导。

from datetime import datetime
from datetime import time
from time import strftime
import time

start = datetime.now()
time.sleep(3)
end = datetime.now()

print(start)
print(end)
dt = (end - start)
print('Defual Time:',dt)

print('New Format DateTime',dt.strftime("%m/%d/%y %H:%M:%S"))

我的输出低于输出。

2020-10-17 19:15:36.831928
2020-10-17 19:15:39.843373
Defualt Time: 0:00:03.011445
Traceback (most recent call last):
  File "D:/New folder/IoT2.py",line 30,in <module>
    print('New Format DateTime',dt.strftime("%m/%d/%y %H:%M:%S"))
AttributeError: 'datetime.timedelta' object has no attribute 'strftime'

解决方法

您可以从datetime.timedelta中获取几秒钟和几天的时间,因此您可以执行以下操作!

from datetime import datetime
import time

start = datetime.now()
time.sleep(3)
end = datetime.now()

print(start)
print(end)
dt = (end - start)
print('Default Time:',dt)

def days_hours_minutes(td):
    x = (td.days,td.seconds//3600,(td.seconds//60)%60,td.seconds)
    return x #(days,hrs,mins,seconds)

print('New Format DateTime',days_hours_minutes(dt))
,

您可以使用timedelta对象的total_seconds方法并自己计算相应的小时分钟和秒,然后可以根据需要格式化输出字符串。

from datetime import datetime
from datetime import time
from time import strftime
import time

start = datetime.now()
time.sleep(3)
end = datetime.now()

print(start)
print(end)
dt = (end - start)
print('Defual Time:',dt)

dt_sec=dt.total_seconds()
hours,rem=divmod(dt_sec,3600)
minutes,rem=divmod(rem,60)

print('New Format DateTime',f'{hours:0>2.0f}:{minutes:0>2.0f}:{rem:0>2.0f}:'+f'{rem:.3f}'[-3:])

修改

我还添加了毫秒打印。

,

出现属性错误的原因是因为strftime属于datetime.datetime类(来自datetime.now())而不是datetime.timedelta类(来自end-start )。

实际上,您实际上可以使用total_seconds()方法来获取时差的秒数,并根据需要将其格式化为字符串。

编辑:您可以使用microseconds的{​​{1}}属性来计算毫秒并设置其格式以显示。

timedelta

此输出为:

from datetime import datetime
from datetime import time
from time import strftime
import time

start = datetime.now()
time.sleep(3)
end = datetime.now()

print(start)
print(end)
dt = (end - start)
print('Default Time:',dt)

milliseconds = int(round(dt.microseconds/1000,1))

dt = int(dt.total_seconds())

print('New format: {:02}:{:02}:{:02}:{:03}'.format(dt // 3600,dt % 3600 // 60,dt % 60,milliseconds))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...