代码之家  ›  专栏  ›  技术社区  ›  darkhorse

如果不是由用户使用Python datetime设置的,如何将微秒设置为零?

  •  0
  • darkhorse  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  4
  •   buran    6 年前

    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
    
        2
  •  2
  •   Sam Hollenbach    6 年前

    您可以对输入字符串的长度运行一个简单的检查,假设您需要标准化的输入。

    user_input = '14:24:41'
    if len(user_input) == 8:
        user_input += '.000000'
    time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()