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