我需要在视图中将字符串转换为日期。考虑到这一点,我想知道实现这一点的最佳方法,涵盖了大多数情况。
是否有任何本机Python 3. *方式来对待它?
如果没有,我该怎么办呢?
提前致谢!
import datetime
def foo(bar):
date = make_date(bar)
return date
def make_date(string):
try:
if isinstance(string, str): # python 3.* and up
if '/' in string:
if ':' in string: # '29/05/2018 21:42:42'
return datetime.datetime.strptime(string, '%d/%m/%Y %H:%M:%S').date()
else: # '29/05/2018'
return datetime.datetime.strptime(string, '%d/%m/%Y').date()
elif '-' in string:
if ':' in string: # '2018-05-29 21:42:42'
string = string.replace('Z', '') # '2018-05-29T21:42:42Z'
return datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M').date()
else: # '2018-05-29'
return datetime.datetime.strptime(string, '%Y-%m-%d').date()
elif isinstance(string, (date)): # datetime.date(2018, 5, 29)
return string
elif isistance(string, (datetime)): # datetime.datetime(2018, 5, 29, 21, 42, 42, 424242)
return string.date()
return None
except:
return None