首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用strptime()的2位数年份不能很好地解析生日

使用strptime()的2位数年份不能很好地解析生日
EN

Stack Overflow用户
提问于 2010-07-19 17:04:13
回答 3查看 5.2K关注 0票数 6

考虑以下生日(如dob):

  • 6月1日至6日
  • 1-6月-69

当用Python的datetime.strptime(dob, '%d-%b-%y')解析时,会产生:

  • datetime.datetime(2068, 6, 1, 0, 0)
  • datetime.datetime(1969, 6, 1, 0, 0)

当然,他们应该出生在同样的十年,但现在,它甚至不是在同一个世纪!

根据文档,这是完全有效的行为:

当接受2位数的年份时,它们按照POSIX或X/开放标准转换: 69-99值映射到1969-1999年,0-68值映射到2000-2068年。

我明白为什么这个函数是这样设置的,但是有没有办法解决这个问题呢?也许你可以定义你自己的2位数年的范围?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-19 17:07:45

如果你总是在生日的时候使用它,那么如果一年过去了,只需减去100:

代码语言:javascript
复制
if d > datetime.now():
    d = datetime(d.year - 100, d.month, d.day)
票数 12
EN

Stack Overflow用户

发布于 2010-07-19 17:12:29

这一职能将这一年转移到1950年:

代码语言:javascript
复制
def millenium(year, shift=1950):
    return (year-shift)%100 + shift
票数 2
EN

Stack Overflow用户

发布于 2010-07-19 17:07:47

如果你期待一个生日,你可以随时手动按摩数据--未来的任何日期都会自动推迟一个世纪,或者其他类似的日期。

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

https://stackoverflow.com/questions/3283209

复制
相关文章

相似问题

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