如何从数据库生日字段和date.today()计算确切年龄?

时间:2019-08-05 18:30:33

标签: python django

我有两个约会:

  1. 来自数据库的查询集,其中包括日期字段(1992-11-15)和date.today()

这是我的观点。py

    def pop(request):
    start = randint(0, 2)
    finish = randint(2, 5)
    current_year = [date.today().year, date.today().year]
    context = {
        'alluserprofiles': zip(Profile.objects.all()[start:finish], 
    current_year),
        'maleuserprofiles': zip(Profile.objects.filter(gender='male'), current_year),
        'femaleuserprofiles': zip(Profile.objects.filter(gender='female'), current_year),
        'start': start,
        'finish': finish
    }
    return render(request, 'users/pop.html', context)

这是我的Django模板

   {% for profile, year in alluserprofiles %}
<div class="container fixed-top" id="pop-up">
  <div class="card text-center border-light mb-3">
    <img class="card-img-top" src="{{ profile.image_prof.url }}" />
    <div class="card-body">
            <h5> {{ profile.user }} {{ year|sub:profile.birthday.year}}

如何减去它们以获取确切年龄?我只能处理年份减法。

非常感谢

3 个答案:

答案 0 :(得分:2)

重复项:Subtracting Dates With 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

(对不起,我只能回答,因为我没有足够的声誉)

答案 1 :(得分:0)

如下所示,

import datetime

def age_calc(dob):
   return date.today().year - dob.year - ((date.today().month, date.today().day) < (dob.month, dob.day))

答案 2 :(得分:0)

这是解决方案

{{ profile.birthday|timesince:year|slice:":2" }}

最后切片以获取年龄数字