我正在制作一个简单的程序来告诉个人他们活了多久.
我知道如何获得当前日期,并获得他们的生日.唯一的问题是我无法减去这两个,我知道一种减去两个日期的方法,但不幸的是它不包括小时,分钟或秒.
我正在寻找一种方法,可以减去两个日期,并将差异返回到第二个,而不仅仅是一天.
Dav*_*son 22
from datetime import datetime
birthday = datetime(1988, 2, 19, 12, 0, 0)
diff = datetime.now() - birthday
print diff
# 8954 days, 7:03:45.765329
jfs*_*jfs 10
使用UTC时间,否则在DST过渡期间,以秒为单位的年龄可能会倒退:
from datetime import datetime
born = datetime(1981, 12, 2) # provide UTC time
age = datetime.utcnow() - born
print(age.total_seconds())
如果您的程序在与人出生地不同的地方(时区)运行,或者自生日以来时间规则在此处更改,则您也无法使用当地时间.它可能会引入几个小时的错误.
如果你想考虑闰秒,那么任务变得几乎不可能.
datetime.datetime从您的日期创建一个:
datetime.datetime.combine(birthdate, datetime.time())
现在您可以从 中减去它datetime.datetime.now()。
>>> from datetime import date, datetime, time
>>> bday = date(1973, 4, 1)
>>> datetime.now() - datetime.combine(bday, time())
datetime.timedelta(14392, 4021, 789383)
>>> print datetime.now() - datetime.combine(bday, time())
14392 days, 1:08:13.593813
当两个datetime对象相减时,您将得到一个新datetime.timedelta对象。
from datetime import datetime
x = datetime.now()
y = datetime.now()
delta = y - x
它将为您提供微码分辨率的时差。
有关更多信息,请查看官方文档。