Python 如何解析具有两位数年份的字符串日期?

Python 如何解析具有两位数年份的字符串日期?,python,date,y2k,2-digit-year,Python,Date,Y2k,2 Digit Year,我需要以yymmd格式解析表示6位日期的字符串,其中yy的范围为59到05(1959到2005)。根据模块文档,Python的默认透视年是1969年,这对我来说不起作用 是否有一种简单的方法来覆盖枢轴年,或者您可以建议其他解决方案?我正在使用Python 2.7。谢谢 使用您自己的轴心点将世纪提前到您的日期: year = int(date[0:2]) if 59 <= year <= 99: date = '19' + date else dat

我需要以
yymmd
格式解析表示6位日期的字符串,其中
yy
的范围为59到05(1959到2005)。根据模块文档,Python的默认透视年是1969年,这对我来说不起作用


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

使用您自己的轴心点将世纪提前到您的日期:

  year = int(date[0:2])
  if 59 <= year <= 99:
      date = '19' + date
  else
      date = '20' + date
year=int(日期[0:2])

如果59我会使用
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)

您还可以执行以下操作:

today=datetime.datetime.today().strftime("%m/%d/%Y")
today=today[:-4]+today[-2:]

最近有一个类似的案例,最终得出了这个基本的计算和逻辑:

pivotyear = 1969
century = int(str(pivotyear)[:2]) * 100

def year_2to4_digit(year):
    return century + year if century + year > pivotyear else (century + 100) + year

如果您处理的是最近的日期和非常旧的日期,并且希望使用当前日期作为轴心(而不仅仅是当前年份),请尝试以下代码:

导入日期时间
def解析日期(日期):
parsed=datetime.datetime.strtime(日期“%y%m%d”)
当前日期=datetime.datetime.now()
如果分析>当前日期:
parsed=parsed.replace(year=parsed.year-100)
返回解析

使用Py3时,else语句后缺少“:”。
pivotyear = 1969
century = int(str(pivotyear)[:2]) * 100

def year_2to4_digit(year):
    return century + year if century + year > pivotyear else (century + 100) + year