我试图接收用户输入,并从该字符串创建一个时间对象。像这样:
import datetime
user_input = '14:24:41.992181'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()
但是,假设user_input
是'14:24:41'
,那么我会收到格式错误,这是可以理解的。我要为这样的输入做准备,将时间对象的微秒精度自动设置为000000
。我注意到使用%z
对时区进行了类似的操作,并将其内置到strptime()
方法中。
执行此操作的理想方法是什么?
答案 0 :(得分:4)
您可以使用try / except来处理用户输入与格式字符串不匹配的情况
import datetime
user_inputs = ['14:24:41.992181','14:24:41']
for user_input in user_inputs:
try:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S.%f')
except ValueError:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S')
print(dt.strftime('%H:%M:%S.%f'))
输出
14:24:41.992181
14:24:41.000000
答案 1 :(得分:2)
如果您期望使用标准化的输入,则可以对输入字符串的长度进行简单检查。
user_input = '14:24:41'
if len(user_input) == 8:
user_input += '.000000'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()