You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:30:55