如何更正此问题:时间数据'9121991'与格式'%d%m%Y'错误不匹配?

时间:2017-09-21 16:04:36

标签: python-2.7 datetime python-datetime

我试图使用python计算一个人从出生日期开始的年龄。

我已经尝试了thisthis但未找到答案。

我做了以下事情:

  

导入日期时间,日期

from datetime import datetime, date
  

创建以下表示法:

print ('Enter your date of birth here (dd mm yyyy): ')
date_of_birth = datetime.strptime(str(input('----->')), '%d %m %Y')


def calculate_age(born):

    today = date.today()
    return today.year - born.year - (( today.month, today.day) < (born.month, born.day))

age = calculate_age(date_of_birth)

print (age)

但是,当我以此格式输入日期时9121991

我收到此值错误。

顺便提一下,当我以09121991格式输入时,我收到了此错误

enter image description here

我该如何纠正?

1 个答案:

答案 0 :(得分:1)

由于您的格式中包含空格,因此无法识别您的字符串。

有效:

from datetime import datetime, date

date_of_birth = datetime.strptime("09121991", '%d%m%Y')

请注意,您无法使用input输入09121991,因为在Python 2中:

  • input评估表达式
  • 09121991被视为八进制数,但无效,因为它包含9

所以替代方案是使用raw_input()。那会有用。

顺便说一句:如果你需要用零填充,请使用raw_input().zfill(8)。无需使用该技巧添加前导零。