我有一个字符串,我需要转换为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")
答案 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