python - 如何在 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'

最佳答案

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

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

编辑:您可以使用 timedeltamicroseconds 属性来计算您的毫秒数并将其格式化以显示。

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

https://stackoverflow.com/questions/64403223/

相关文章:

javascript - 浏览器客户端如何在没有像 Apollo 或 Relay 这样的库的情况下使

laravel - 我正在尝试使用关系获取名称

ruby-on-rails - "Could not find concurrent-ruby-1.

java - Spark 工作之间的巨大时间差距

java - Gradle 在多模块 micronaut 项目上运行失败

qt - 带有在运行时加载的自定义 QML 插件的基于 CMake 的项目仅在 MinGW 下失败

docker - 每个命令都会导致 fatal error : runtime: out of me

python - 如何在 Python 中删除 .txt 文件的前几行?

javascript - Json 对象在 IE11 中无法正确获取

node.js - MongoDB-Memory-Server 使 jest 测试调试卡在 WSL