Как установить микросекунду в ноль, если она не установлена ​​пользователем с использованием даты и времени Python? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь принять пользовательский ввод и создать объект времени из этой строки.Примерно так:

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 голосов
/ 24 декабря 2018

Вы можете выполнить простую проверку длины входной строки, предполагая, что вы ожидаете стандартизированных входных данных.

user_input = '14:24:41'
if len(user_input) == 8:
    user_input += '.000000'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()
0 голосов
/ 24 декабря 2018

вы можете использовать try / исключением и обрабатывать случай, когда пользовательский ввод не соответствует строке формата

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'))

output

14:24:41.992181
14:24:41.000000
...