首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日期时间如何决定'22‘在%y是2022年而不是1922年?

日期时间如何决定'22‘在%y是2022年而不是1922年?
EN

Stack Overflow用户
提问于 2022-10-27 07:25:27
回答 3查看 99关注 0票数 0

示例代码

代码语言:javascript
运行
复制
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

datetime是如何确定使用'%y‘格式的字符串生成的年份的。为什么80变成1980年,50变成2050年?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-27 07:35:42

Python文档表明strftime/strptime遵循C的语义

本模块中定义的大多数函数调用具有相同名称的platform C库函数。

以及记录%y的行为

当给定%y格式代码时,函数strptime()可以解析2位数的年份。当分析2位数年份时,它们按照POSIX和ISO C标准进行转换:69-99值映射到1969-1999年,0-68值映射到2000-2068年。

但是我们可以通过查找STRPTIME(3) ( %y )来确认这种行为。

本世纪内的一年。当不指定一个世纪时,在69-99范围内的数值是指二十世纪的年份(1969年至1999年包括在内);在00-68范围内的数值是指二十一世纪(2000年至2068年包括在内)的年份。前导零是允许的,但不需要。

强调我的。

这个截止没有明确的理由,但是有理由认为它起源于1970年的UNIX时代,边界上有一年的安全裕度。

票数 2
EN

Stack Overflow用户

发布于 2022-10-27 07:30:43

这是在_strptime.py下记录的。

代码语言:javascript
运行
复制
if group_key == 'y':
    year = int(found_dict['y'])
    # Open Group specification for strptime() states that a %y
    #value in the range of [00, 68] is in the century 2000, while
    #[69,99] is in the century 1900
    if year <= 68:
        year += 2000
    else:
        year += 1900
票数 1
EN

Stack Overflow用户

发布于 2022-10-27 07:41:38

来自时间的文档

当给定%y格式代码时,函数strptime()可以解析2位数的年份。当分析2位数年份时,它们按照POSIX和ISO C标准进行转换:69-99值映射到1969-1999年,0-68值映射到2000-2068年。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74218240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档