3

我是 python 编程的新手,我的编码有问题,因为输出在几天和几秒内无法正确显示年龄(如下面的“输出”所示)

输出

Please enter your birthday
Year:1985
Month (1-12):5
Date:8
Your age is 10024 days, 0:00:00

任何人都可以进一步协助为什么以及如何解决这个问题?

代码

print "Please enter your birthday "
bd_y=int(input("Year:"))
bd_m=int(input("Month (1-12):"))
bd_d=int(input("Date:"))

from datetime import date
now = date.today ()

age = date(int(bd_y), int(bd_m), int(bd_d))
print ("Your age is " + str(now-age))

提前致谢 :)

4

4 回答 4

8

datetime.date仅跟踪年、月和日。如果你也想要时间,你应该使用datetime.datetime

>>> from datetime import datetime
>>> str(datetime.now() - datetime(1985, 5, 8))
'10024 days, 8:51:08.441714'

减法的结果是一个datetime.timedelta对象,它具有属性daysseconds和 ,microseconds用于自定义输出:

>>> delta = datetime.now() - datetime(1985, 5, 8)
>>> print "Your age is %d days and %d seconds" % (delta.days, delta.seconds)
Your age is 10024 days and 32125 seconds
于 2012-10-17T15:50:26.500 回答
4

您应该使用datetime而不是date.

确保您也更改了导入。

于 2012-10-17T15:49:30.723 回答
2

以下作品。您被转换为 int() 两次,但这不会破坏它。

我建议按照建议切换到日期时间,但下面使用您提供的内容。

print "Please enter your birthday"
bd_y = input("Year: ")
bd_m = input("Month (1-12): ")
bd_d = input("Date: ")

from datetime import date
now = date.today()

birthdate = date(int(bd_y), int(bd_m), int(bd_d))

age =  now-birthdate

print "Your age is %s" % age
于 2012-10-17T16:23:42.037 回答
1
print("please enter your birthday")
bd_y=int(input("Year:"))
bd_m=int(input("Month(1-12):")) 
bd_d=int(input("Date:"))
from datetime import date
now = date.today ()

age = date(int(bd_y),int(bd_m), int(bd_d))
print ("your age is " +str(now-age))
于 2013-10-25T08:40:42.567 回答