如何用2位数年份解析字符串日期?

bla*_*238 31 python date 2-digit-year y2k

我需要解析代表格式6位数的日期字符串yymmdd,其中yy范围从59到05年(1959至2005年).根据time模块文档,Python的默认透视年份是1969年,这对我不起作用.

是否有一种简单的方法可以覆盖枢轴年,或者您可以建议其他解决方案吗?我使用的是Python 2.7.谢谢!

mgi*_*son 36

我会datetime正常使用和解析它.然后我会datetime.datetime.replace在对象上使用它,如果超过你的上限日期 - 将它调整回100年:

import datetime
dd = datetime.datetime.strptime(date,'%y%m%d')
if dd.year > 2005:
   dd = dd.replace(year=dd.year-100)
Run Code Online (Sandbox Code Playgroud)


msw*_*msw 5

使用您自己的支点使世纪成为您的约会日期:

  year = int(date[0:2])
  if 59 <= year <= 99:
      date = '19' + date
  else
      date = '20' + date
Run Code Online (Sandbox Code Playgroud)

然后用strptime%Y指令代替%y


Pic*_*Pic 5

import datetime
date = '20-Apr-53'
dt = datetime.datetime.strptime( date, '%d-%b-%y' )
if dt.year > 2000:
    dt = dt.replace( year=dt.year-100 )
                     ^2053   ^1953
print dt.strftime( '%Y-%m-%d' )
Run Code Online (Sandbox Code Playgroud)