考虑以下生日(dob
):
使用Python解析时,datetime.strptime(dob, '%d-%b-%y')
将产生:
datetime.datetime(2068, 6, 1, 0, 0)
datetime.datetime(1969, 6, 1, 0, 0)
当然,他们应该出生在同一个十年,但现在甚至不是在同一个世纪!
根据docs,这是完全有效的行为:
当接受2位数年份时,它们会根据而转换 POSIX或X / Open标准:值69-99映射到1969-1999, 值0-68映射到2000-2068。
我理解为什么函数设置如此,但是有办法解决这个问题吗?也许定义自己的两位数年份范围?
答案 0 :(得分:12)
如果你总是在生日那天使用它,那么如果年份在现在之后就减去100:
if d > datetime.now():
d = datetime(d.year - 100, d.month, d.day)
答案 1 :(得分:2)
此功能将年份转移到1950年:
def millenium(year, shift=1950):
return (year-shift)%100 + shift
答案 2 :(得分:0)
如果您期待生日,您可以随时手动按摩数据 - 未来的任何日期都会自动设定为一个世纪,或某些日期。