如果用户未使用Python日期时间将微秒设置为零,如何将其设置为零?

时间:2018-12-23 22:00:59

标签: python python-datetime

我试图接收用户输入,并从该字符串创建一个时间对象。像这样:

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()方法中。

执行此操作的理想方法是什么?

2 个答案:

答案 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()