如何在Python(2.7)中解析可能有或没有十进制秒的时间?

时间:2013-08-13 17:57:40

标签: python python-2.7 strptime

解析时如何让strptime选择使用小数秒?我正在寻找一种简洁的方法来解析%Y%m%d-%H:%M:%S.%f%Y%m%d-%H:%M:%S

使用%f我发现错误:

ValueError: time data '20130807-13:42:07' does not match format '%Y%m%d-%H:%M:%S.%f'

2 个答案:

答案 0 :(得分:2)

t = t.rsplit('.', 1)[0]
time.strptime('%Y%m%d-%H:%M:%S.%f', t)

或者只是确保添加小数:

if not '.' in t:
    t += '.0'
time.strptime('%Y%m%d-%H:%M:%S.%f', t)

这应该这样做。

答案 1 :(得分:2)

尝试这样的事情:

import time

def timeFormatCheck(input):
    try:
        output = time.strptime(input, '%Y%m%d-%H:%M:%S.%f') #or you could even return
    except ValueError:
        output = time.strptime(input,'%Y%m%d-%H:%M:%S') #or you could even return
    return output

或者如果你想要一个布尔值,试试这个:

import time

def isDecimal(input):
    try:
        time.strptime(input, '%Y%m%d-%H:%M:%S.%f')
        return True
    except ValueError:
        return False