繁体   English   中英

如何在Python中减去两个日期?

[英]How can I subtract two dates in Python?

因此,基本上我想做的就是从今天的日期中减去出生日期,以得出某人的年龄,我已经成功地做到了,但是我只能得到它来显示某人的年龄。

dateofbirth = 19981128
dateofbirth = list(str(dateofbirth))
now = datetime.date.today()
yr = dateofbirth[:4]
yr = ''.join(map(str, yr))
month = dateofbirth[4:6]
month = ''.join(map(str, month))
day = dateofbirth[6:8]
day = ''.join(map(str, day))
birth = datetime.date(int(yr), int(month), int(day))
age = now - birth
print(age)

在这种情况下,年龄以天为单位,有什么办法可以将其设为xx年xx个月和xx天?

您可以使用strptime

>>> import datetime
>>> datetime.datetime.strptime('19981128', '%Y%m%d')
datetime.datetime(1998, 11, 28, 0, 0)
>>> datetime.datetime.now() - datetime.datetime.strptime('19981128', '%Y%m%d')
datetime.timedelta(5823, 81486, 986088)
>>> print (datetime.datetime.now() - datetime.datetime.strptime('19981128', '%Y%m%d'))
5823 days, 22:38:18.039365

在Python中减去两个日期的结果是一个timedelta对象,它仅表示一个持续时间。 它不会在启动时“记住”,因此无法告诉您已经过去了多少个月。

考虑从1月1日到3月1日的时间是“两个月”,从3月1日到4月28日的时间是“ 1个月28天”,但是在非-年中,它们的时间都是相同的,59天。 实际上,这是节省日光的方法,但不要让它变得比指出要点更复杂;-)

可能有一个第三方库可以为您提供帮助,但是就标准Python库而言,AFAIK您必须袖手旁观,并通过查找不同日期/月份/年份组件的差异来自己做。依次两个日期。 当然,月份和日期的差异可能是负数,因此您必须处理这些情况。 回忆一下在学校如何教您进行减法运算,并且在将数字从“月份”列携带到“天”列时要非常小心,以使用相关月份的正确天数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM