为什么两位数年份的strptime为69在python中返回1969?

问题描述 投票:0回答:1

请看下面的代码

def expdate(date):
    _exp_date = datetime.strptime(date, "%m%y")

>>> expdate('1268')
2068-12-01 00:00:00
>>> expdate('1269')
1969-12-01 00:00:00

[可选地,如何实际克服这一难题并获得2070?我将只使用两位数的年份进行检查。

python python-3.x datetime strptime
1个回答
0
投票

Python依赖于平台的C库,该库通常不会出现2000年问题,因为所有日期和时间在内部都表示为从纪元开始的秒数。接受struct_time的函数通常需要4位数字的年份。

[接受两位数的年份时,将根据POSIX或X / Open标准进行转换:将值69-99映射到1969-1999,将值0-68映射到2000-2068。

参考:Python中的Year 2000 (Y2K) issues

© www.soinside.com 2019 - 2024. All rights reserved.