Python datetime中%y解析两位年份的规则:为何22是2022、80是1980?
Python datetime模块解析两位年份的规则说明
示例代码
a = '27-10-80' b = '27-10-22' c = '27-10-50' x = datetime.strptime(a, '%d-%m-%y') print(x) y = datetime.strptime(b, '%d-%m-%y') print(y) z = datetime.strptime(c, '%d-%m-%y') print(z)
输出结果
1980-10-27 00:00:00
2022-10-27 00:00:00
2050-10-27 00:00:00
问题解答
Python的datetime.strptime使用%y格式解析两位年份时,遵循69/70的固定分界规则:
- 当两位年份数值在
00到69之间时,会映射到2000-2069年(直接给两位年份加2000); - 当数值在
70到99之间时,会映射到1970-1999年(直接给两位年份加1900)。
对应到示例里的情况:
80属于70-99区间,所以计算为1900 + 80 = 1980;22落在00-69区间,得到2000 + 22 = 2022;50同样在00-69范围内,结果是2000 + 50 = 2050。
这套规则是Python为适配日常日期使用场景设计的——默认让近几十年的年份解析到当前世纪,更早的两位年份归到上一个世纪,避免出现1922这种不符合常规需求的久远年份。
内容的提问来源于stack exchange,提问作者Ricky
相关产品推荐
相关产品推荐

