更新时间:2023-11-29 12:54:10
您可以使用Try-Parse-Else-Approach:
You could use a Try-Parse-Else-Approach:
from datetime import datetime
def normalizeDateString(ds):
'''normalizes a date of format "d / d / dddd " to "dd/dd/dddd"'''
sp = ds.replace(" ","").split("/")
if len(sp[0])==1:
sp[0]="0"+sp[0]
if len(sp[1])==1:
sp[1]="0"+sp[1]
return sp[0]+"/"+sp[1]+"/"+sp[2]
def parseDT(dateString):
''' parses "dd/dd/yyyy" as US (month/day/year). Fallback: day/month/year on error'''
try:
repl = normalizeDateString(dateString)
return datetime.strptime(repl, "%m/%d/%Y").date()
except:
return datetime.strptime(repl, "%d/%m/%Y").date()
print(parseDT("14/12/2018"))
print(parseDT("2/5/2018")) # ok for US
print(parseDT("22/5/2018")) # not ok for US
print(parseDT("12/2/2018"))
print(parseDT("2/1/2018"))
输出:
2018-12-14
2018-02-05 # US ok
2018-05-22 # EN by except
2018-12-02
2018-02-01
HTH