关于datetime.time()传入strftime后返回未请求内容的原因咨询
为什么传入datetime.time()给strftime会出现额外内容?
嘿,我来帮你拆解这个问题~你看到的“未请求的内容”其实不是strftime方法返回的,大概率是你的代码同时输出了**datetime.time对象本身**和strftime的格式化结果,才会出现这种情况。
具体来说:
- 当你直接打印
datetime.time()对象时,它会用默认格式输出,包含时、分、秒甚至微秒(比如10:40:54.160337),同时它的类型是datetime.time。 - 而
strftime()方法只会返回你指定格式的字符串(比如你例子里的10:40 10:40:54 AM),类型是str。
举个例子,如果你写了这样的代码:
from datetime import time t = time(10, 40, 54, 160337) # 同时打印了对象本身和strftime的结果 print(t, type(t), t.strftime('%H:%M %I:%M:%S %p'), type(t.strftime('%H:%M %I:%M:%S %p')))
就会输出类似你看到的内容:10:40:54.160337 <class 'datetime.time'> 10:40 10:40:54 AM <class 'str'>。
验证一下:
如果你单独调用strftime()并打印,只会得到你想要的格式化结果:
from datetime import time print(time(10,40,54,160337).strftime('%H:%M %I:%M:%S %p'))
输出只会是:10:40 10:40:54 AM,不会带那个带微秒的时间串。
另外,如果你是错误地把datetime.time对象传给了time模块的strftime方法,通常会直接报错(因为time.strftime需要的是struct_time类型,不是datetime.time),所以这种情况可能性不大。
总结一下:你看到的额外内容是datetime.time对象自身的默认输出,不是strftime返回的——检查下代码是不是同时打印了对象本身和格式化结果就好啦~
内容的提问来源于stack exchange,提问作者TASC Solutions
相关产品推荐
相关产品推荐

