Python datetime不包括django的周末
我有一个关于我的约会时间的问题,我需要一个不包括周末的最后15天的约会,我正在解决这个问题,但我得到了所有的日期,包括周末。 这是我的密码:-Python datetime不包括django的周末,python,django,datetime,Python,Django,Datetime,我有一个关于我的约会时间的问题,我需要一个不包括周末的最后15天的约会,我正在解决这个问题,但我得到了所有的日期,包括周末。 这是我的密码:- days_to_show = 15 start_date = datetime.date.today() - datetime.timedelta(days=days_to_show) #print start_date query = Book.objects.values('startdate').order_by('time
days_to_show = 15
start_date = datetime.date.today() - datetime.timedelta(days=days_to_show)
#print start_date
query = Book.objects.values('startdate').order_by('timeid') \
.annotate(spent=Sum('spent')) \
.filter(project_id=project_id,
startdate__range=(start_date, datetime.datetime.now()))
spent_dict = dict((d['startdate'], d['spent']) for d in query)
date_list = [str((start_date) + (datetime.timedelta(days=day)))
for day in range(0, days_to_show)]
sp_data['time'] = [{'startdate': date, "spent":spent_dict.get(str(date),0)}
for date in date_list ]
Python端(较慢,因为数据被拉到应用程序,然后被过滤)
如op的评论所述,如果在数据库中日期存储为VARCHAR
,而不是DATE
或DATETIME
(坏主意),则可以使用Python将其转换为DATE
或DATETIME
Python时间,然后使用.weekday()
在python上datetime
和date
对象以过滤掉星期六(5)和星期日(6),例如
数据库端(更好的是,数据存储为DATE/DATETIME,并在数据库端进行过滤,因此只将相关数据发送回应用程序)
Django有一个week\u day
查找功能,可用于日期/日期时间类型:
但是我有所有的约会,包括周末
您可以从所需范围中排除周末,例如do
Book.objects.filter(…).exclude(date\uu week\u day\uu in=[1,7])
从查询集中删除星期日(1)和星期六(7)分两个阶段创建日期列表
:
# get all dates for the period
date_list = [(start_date) + datetime.timedelta(days=day)
for day in range(0, days_to_show)]
# filter out week ends
date_list = [str(date) for date in date_list if date.weekday() not in (5,6)]
在数据库中,我将startdate作为varchar而不是datetime。在
varchar
类型上而不是我认为的datetime
类型上执行\u range=(a,b)
是个坏主意,但我用Python解决方案进行了更新
# get all dates for the period
date_list = [(start_date) + datetime.timedelta(days=day)
for day in range(0, days_to_show)]
# filter out week ends
date_list = [str(date) for date in date_list if date.weekday() not in (5,6)]