我试图根据不同格式的列表确定是否可以将字符串作为日期施放。因此,必须将整个列表循环过。如果发现比赛,则应返回该匹配。如果所有尝试返回错误,则应返回该错误。我不太确定该怎么做,可以在下面看到我的方法。
_DEFAULT_PATTERNS = ["%d.%m.%Y", "%y-%m-%d"]
try:
if format == 'default':
for p in _DEFAULT_PATTERNS:
try:
value = datetime.strptime(value, p).date()
except:
continue
except Exception:
return ERROR
return value
您的首选是使用dateutil.parser
。但是,如果解析器不满足您的需求,请在以下是您的代码的版本,请整理:
def parseDate(value):
PATTERNS = ("%d.%m.%Y", "%y-%m-%d")
for p in PATTERNS:
try:
return datetime.strptime(value, p).date()
except ValueError:
continue
return False # No match found
另外,如果找不到比赛(而不是返回False
),请提高异常。这将使您的功能与strptime
更相似:
raise ValueError
尝试这样的东西:
from datetime import datetime
_DEFAULT_PATTERNS = ["%d.%m.%Y", "%y-%m-%d"]
def is_castable_to_date(value):
for p in _DEFAULT_PATTERNS:
try:
value = datetime.strptime(value, p).date()
return True
except:
pass
return False
print is_castable_to_date("12-12-12")
print is_castable_to_date("12.12.12")
print is_castable_to_date("12/12/12")