我想写一个基本的提醒应用程序,用户可以输入重要的日期(生日,纪念日等),看看有多少时间,直到该日期的下个周年纪念日。例如,用户可以像1990年1月1日那样生日,我想为他们显示直到他们下一个生日的时间(2个月14天)。保存旧的日期和显示时间,直到在Django的那个日期的下一个周年纪念
我一直使用内置模板标签的django timeuntil,但它只适用于将来的日期(如果日期在当前日期之前,它不会显示任何内容)。我不知道如何去将所输入的日期“正常化”为将来的某个时间。
当前代码:
def events(request):
relationships = Relationship.objects.filter(user=request.user)
events = Event.objects.filter(user=request.user).order_by('date')[:8]
event_date = events[0].date
if datetime.now() >= event_date:
difference = datetime.now() - event_date
event_date_new = event_date + difference
event_date = event_date_new
context = {
'relationships': relationships,
'events': events
}
return render(request, 'app/events.html', context)
模板
<td class="column-right"><h4>{{event.date|timeuntil}}</h4></td>
(这也有助我们datetime.now()的错误模块没有属性 “现在”,是一个古老的方式找到当前日期?)
在此先感谢!
2月29日会发生什么? –
@ChristianTernus - 一个公平的点,但我认为OP必须做出决定。 'replace'只在'event_date'上被调用,而不是当前日期,所以可以在入口或计算中检查特殊情况。我不确定到2012年2月29日的下周年应该是什么时间。 –
当处理日期偏移量时,最好使用像'dateutil.relativedelta'这样的处理2月29日之类的案例。 –