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

如何在python中获取两位数(00.00.00)的小时格式?,python,datetime,iot,datetime-format,strftime,Python,Datetime,Iot,Datetime Format,Strftime,下面是我在应用程序中使用的示例代码。我希望默认的小时格式为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.

下面是我在应用程序中使用的示例代码。我希望默认的小时格式为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'
2020-10-17 19:15:36.831928
2020-10-17 19:15:39.843373
解除时间:0:00:03.011445
回溯(最近一次呼叫最后一次):
文件“D:/New folder/IoT2.py”,第30行,在
打印('New Format DateTime',dt.strftime(“%m/%d/%y%H:%m:%S”))
AttributeError:“datetime.timedelta”对象没有属性“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方法,自己计算相应的小时分钟和秒,然后可以根据需要格式化输出字符串

从日期时间导入日期时间
从日期时间导入时间
从时间导入strftime
导入时间
start=datetime.now()
时间。睡眠(3)
end=datetime.now()
打印(开始)
列印(完)
dt=(结束-开始)
打印('DEFAUL Time:',dt)
dt_秒=dt.总秒数()
小时数,rem=divmod(dt_秒,3600)
分钟,雷姆=divmod(雷姆,60)
打印('New Format DateTime',f'{hours:0>2.0f}:{minutes:0>2.0f}:{rem:0>2.0f}:'+f'{rem:3f}[-3:]
编辑


我还添加了毫秒的打印。

获取属性错误的原因是
strftime
属于
datetime.datetime
类(from
datetime.now()
),而不是
datetime.timedelta
类(from
end start

相反,您实际上可以使用
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('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

这回答了你的问题吗?希望我的回答能有所帮助!谢谢,但它正在返回一些东西;2020-10-19 10:28:55.604344 2020-10-19 10:28:58.609129默认时间:0:00:03.004785新格式日期时间(0,0,0,3)谢谢。太酷了。。。但有一个问题是如何继续使用milisconds?因为我也需要整毫秒…对于毫秒,在将dt type转换为int.Hi之前,请使用
print(round(dt.microseconds/1000,2))
,不要返回错误的值。这样地。毫秒不是新格式的。2020-10-19 17:36:30.792681 2020-10-19 17:36:33.793254默认时间:0:00:03.000573 0.57新格式:00:00:03嘿,我已根据需要编辑代码以包含毫秒格式。如果它解决了您的问题,请告诉我您的代码输出是2020-10-19 19:19:42.015249 2020-10-19:19:45.016215默认时间:0:00:03.000966新格式:00:00:03:001。我们需要的是,新格式的值应该是00:00:03.000966。还有一件事,谢谢。太酷了。。。但有一个问题是如何继续使用milisconds?因为我也需要整毫秒…然后你也要这样做,但是你应该用三位数而不是2来格式化milllisecond。当然,不,它不起作用。你能确切地告诉我在哪里换吗?