Django/Python - 检查日期是不是在本周
Posted
技术标签:
【中文标题】Django/Python - 检查日期是不是在本周【英文标题】:Django/Python - Check a date is in current weekDjango/Python - 检查日期是否在本周 【发布时间】:2012-02-27 20:56:30 【问题描述】:我想做这样的事情:
entries = Entry.objects.filter(created_at__in = current_week())
如何使它获得良好的性能。谢谢!
编辑:我仍然不知道current_week()
功能。
【问题讨论】:
为您的应用程序定义current_week
。请编写定义“当前”周的第一天所需的代码行。考虑到这个定义,下周的第一天会很容易。 (有些人争论星期是从星期日还是星期一开始,以及从 1 月 1 日开始的偏移量如何。)请提供代码来定义 current week
。
"current_week()函数我还是没有概念。如果不能定义“当前周”,就不能写程序。当前周的定义必须写在代码中。如果你不能这样做,你就不能编写一个测试用例,你也不能证明你的代码有效。如果你不能从用户、主管或产品所有者那里得到本周的定义,你就不能让这个代码工作。现在停止工作。得到一个定义。
【参考方案1】:
从 Django 1.11 开始,我们可以使用 week
Field lookup:
Entry.objects.filter(created_at__week=current_week)
根据 ISO-8601,它将为您提供从星期一到星期日的一周。
查询当前周:
from datetime import date
current_week = date.today().isocalendar()[1]
isocalendar()
将返回一个包含 3 个项目的元组:(ISO 年、ISO 周数、ISO 工作日)。
【讨论】:
这个答案是正确的问题。我一直在寻找如何知道生日是否在本周,因此它不起作用。因为每年的同一天在不同的周。【参考方案2】:是的,这个问题是在 2 年前提出的。今天有了更多的经验,我建议使用arrow
处理日期时间的痛苦更少。
结帐:https://github.com/crsmithdev/arrow
【讨论】:
【参考方案3】:使用__range
。您需要先实际计算一周的开始和结束:
import datetime
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday())
end_week = start_week + datetime.timedelta(7)
entries = Entry.objects.filter(created_at__range=[start_week, end_week])
【讨论】:
正如 S.Lott 所指出的,“周”有多种解释。 @DanielRoseman 在这里的回答假定 Python 默认为从星期一开始的几周。 你不会使用 6 而不是 7 作为 timedelta 吗?星期一 = 0 和星期日 = 6以上是关于Django/Python - 检查日期是不是在本周的主要内容,如果未能解决你的问题,请参考以下文章
在 django python 中添加新卡之前,我如何检查 Stripe 客户是不是已经拥有特定卡
Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘联系人’。检查‘...apps.contact.apps.ContactC
收到错误:MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,并且使用 DJANGO PYTHON 启用了严格的 MIME 检查