使用不同格式解析时间

时间:2017-02-05 00:57:38

标签: python python-3.x datetime

我有一个字符串,我需要转换为datetime格式。问题是它并不总是具有相同的格式。现在我正在使用try,除了尝试我可能遇到的所有格式(参见下面的代码)。有没有办法在所有时间格式中执行此操作?

import datetime

def get_time(start_time):    
        try:
            start_time = datetime.datetime.strptime(start_time, '%m/%d/%y %H:%M:%S')                                    
            return start_time
        except:
            try:
                start_time = datetime.datetime.strptime(start_time, '%H:%M:%S')                
                return start_time
            except:
                try:
                    start_time = datetime.datetime.strptime(start_time, '%m/%d/%Y %H:%M')                    
                    return start_time
                except:
                    print("Error could not convert datetime format")   

1 个答案:

答案 0 :(得分:3)

我认为dateutil对于这样的任务非常有用 - 它可以适当地解析大多数格式。

>>> from dateutil import parser
>>> parser.parse(start_time)

或者,我认为您对try / except语句有正确的想法,但是您应该将所有格式放在列表中并使用单个try-except块而不是丑陋的嵌套来遍历列表。

formats = ['%m/%d/%y %H:%M:%S', '%H:%M:%S', '%m/%d/%Y %H:%M']               
def get_time(start_time):
    for formt in formats:
        try:
            return datetime.strptime(start_time, formt)
        except ValueError:
            pass
    print('Could not convert datetime format')
    # or raise an error