示例代码
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年?
发布于 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时代,边界上有一年的安全裕度。
发布于 2022-10-27 07:30:43
这是在_strptime.py
下记录的。
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
发布于 2022-10-27 07:41:38
来自时间的文档
当给定%y格式代码时,函数strptime()可以解析2位数的年份。当分析2位数年份时,它们按照POSIX和ISO C标准进行转换:69-99值映射到1969-1999年,0-68值映射到2000-2068年。
https://stackoverflow.com/questions/74218240
复制相似问题