将timedelta更改为整数

2024-03-29 15:21:00 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,所以我要建立一个程序,它可以计算出一个人是否年满18岁,因此他们是否可以投票。在

然而,我在努力如何让程序来计算输入的出生日期是否超过18年前。我尝试过各种方法,包括从今天起取消他们的出生日期。在

我认为如果能改变他们目前的出生日期之间的差异,那会更容易日期时间。时间增量在if语句中,它可以与18进行比较。在

我不要太复杂的东西。在

以下是我当前的代码:

from datetime import datetime
while True:
    inp = input("Enter date in format yyyy/mm/dd")
    try:
        then = datetime.strptime(inp, "%Y/%m/%d")
        break
    except ValueError:
        print("Invalid input")
diff = then - datetime.now()
diff = -diff
years = diff/365.25
years = int(years)
if years >= 18:
    print("You can vote")
else:
    print("You can't vote")

当前的问题是years = int(years),这是一种试图改变它的蹩脚方式。在

我该怎么解决这个问题?在


Tags: 程序youinputdatetimeif时间diffcan
3条回答

来自dateutils库的relativedelta将完全按照您的要求操作-通过指定.years我们只输出两个日期之间的年数。在

from datetime import datetime
from dateutil.relativedelta import relativedelta


while True:
    inp = input("Enter date in format yyyy/mm/dd: ")
    try:
        then = datetime.strptime(inp, "%Y/%m/%d")
        break
    except ValueError:
        print("Invalid input")

difference_in_years = relativedelta(datetime.now(), then).years

if difference_in_years >= 18:
    print("You can vote")
else:
    print("You can't vote")

如果你认为years = int(years)是问题,跳过它。那不会有什么害处的。在

then = datetime.strptime(inp, "%Y/%m/%d")
diff = datetime.now() - then
if diff.years/365.25 >= 18:
    print('You can vote.')
else:
    print('You can\'t vote')
# Python 2.7.10 
from datetime import datetime
while True:
    inp = raw_input("Enter date in format yyyy/mm/dd") # 1987/03/29
    try:
        then = datetime.strptime(inp, "%Y/%m/%d")
        break
    except ValueError as e:
        print e
        print("Invalid input")
diff = then - datetime.now()
diff = -diff

print dir(diff)
print diff.days

years = float(diff.days)/365.25 
if int(years) >= 18:
    print("You can vote")
else:
    print("You can't vote")

# 29.711156742 
>>> You can vote

# Python 3.5.2 
from datetime import datetime
while True:
    inp = input("Enter date in format yyyy/mm/dd")
    try:
        then = datetime.strptime(inp, "%Y/%m/%d")
        break
    except ValueError as e:
        print (e)
        print("Invalid input")
diff = then - datetime.now()
diff = -diff
years = float(diff.days)/365.25 
years = int(years)
if years >= 18:
    print("You can vote")
else:
    print("You can't vote")

>>> You can vote

相关问题 更多 >