如何在 python 中获取两位数 (00.00.00) 的小时格式?
How to get hour format in two digit (00.00.00) in python?
下面是我在我的一个应用程序中使用的示例代码。我希望默认小时格式为 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
class(来自 datetime.now()
)而不是 datetime.timedelta
class(来自 end-start
)。
相反,您实际上可以使用 total_seconds()
方法来获取时差的秒数,并根据需要将其格式化为字符串。
编辑:您可以使用timedelta
的microseconds
属性来计算您的毫秒数并将其格式化以显示。
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))
此输出为:
2020-10-19 13:02:13.861103
2020-10-19 13:02:16.863268
Default Time: 0:00:03.002165
New format: 00:00:03:002
下面是我在我的一个应用程序中使用的示例代码。我希望默认小时格式为 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
class(来自 datetime.now()
)而不是 datetime.timedelta
class(来自 end-start
)。
相反,您实际上可以使用 total_seconds()
方法来获取时差的秒数,并根据需要将其格式化为字符串。
编辑:您可以使用timedelta
的microseconds
属性来计算您的毫秒数并将其格式化以显示。
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))
此输出为:
2020-10-19 13:02:13.861103
2020-10-19 13:02:16.863268
Default Time: 0:00:03.002165
New format: 00:00:03:002