我正在研究一个简单的程序来告诉个人他们活着的时间。用Python减去日期
我知道如何获得当前日期,并获得他们的生日。唯一的问题是我无法减去两个,我知道减去两个日期的方法,但不幸的是它不包括小时,分钟或秒。
我正在寻找一种方法,可以减去两个日期,并将差异返回到第二个,而不仅仅是一天。
我正在研究一个简单的程序来告诉个人他们活着的时间。用Python减去日期
我知道如何获得当前日期,并获得他们的生日。唯一的问题是我无法减去两个,我知道减去两个日期的方法,但不幸的是它不包括小时,分钟或秒。
我正在寻找一种方法,可以减去两个日期,并将差异返回到第二个,而不仅仅是一天。
from datetime import datetime
birthday = datetime(1988, 2, 19, 12, 0, 0)
diff = datetime.now() - birthday
print diff
# 8954 days, 7:03:45.765329
不使用本地时间( 'datetime.now()')。 ['使用datetime.utcnow()'](http://stackoverflow.com/a/12126443/4279)。 – jfs
从你的约会创建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
当从其减去2个datettime
对象,你会得到一个datettime.timedelta
对象。
from datettime import datetime
x = datetime.now()
y = datetime.now()
delta = y - x
它会给你与microsencods的分辨率的时差。
欲了解更多信息,看看在official documentation
这不会计算总的差值(以秒为单位的秒数) –
使用UTC时间,否则年龄秒就可以DST过渡期间倒退:
from datetime import datetime
born = datetime(1981, 12, 2) # provide UTC time
age = datetime.utcnow() - born
print(age.total_seconds())
你也不能,如果你的程序运行使用本地时间在与某个人出生地不同的地方(时区)的计算机上,或者自生日以来时间规则在这个地方发生了变化。它可能会引入几个小时的错误。
如果你想考虑闰秒,那么任务几乎是不可能的。
import datetime
born = datetime.date(2002, 10, 31)
today = datetime.date.today()
age = today - born
print(age.total_seconds())
输出:463363200.0
相关:如果找到24个小时有日期时间之间传递 - 的Python(https://stackoverflow.com/q/26313520/4279) – jfs