我需要以yymmdd
格式解析表示6位数日期的字符串,其中yy
的范围是59到05(1959到2005)。根据{{3}}模块文档,Python的默认透视年份是1969年,这对我不起作用。
是否有一种简单的方法可以覆盖枢轴年,或者您可以建议其他解决方案吗?我使用的是Python 2.7。谢谢!
答案 0 :(得分:31)
我会使用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)
答案 1 :(得分:3)
使用您自己的支点将世纪添加到您的日期:
year = int(date[0:2])
if 59 <= year <= 99:
date = '19' + date
else
date = '20' + date
,然后将strptime
与%Y
指令一起使用,而不是%y
。
答案 2 :(得分:3)
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' )
答案 3 :(得分:3)
您还可以执行以下操作:
today=datetime.datetime.today().strftime("%m/%d/%Y")
today=today[:-4]+today[-2:]
答案 4 :(得分:0)
最近有一个类似的案例,最终得到了以下基本计算和逻辑:
pivotyear = 1969
century = int(str(pivotyear)[:2]) * 100
def year_2to4_digit(year):
return century + year if century + year > pivotyear else (century + 100) + year
答案 5 :(得分:0)
如果您要处理的是最近的日期和非常旧的日期,并且希望将当前日期用作轴心(而不仅仅是当前年份),请尝试以下代码:
import datetime
def parse_date(date_str):
parsed = datetime.datetime.strptime(date_str,'%y%m%d')
current_date = datetime.datetime.now()
if parsed > current_date:
parsed = parsed.replace(year=parsed.year - 100)
return parsed