我目前有:
@classmethod
def get_past_week(self):
start_date = datetime.now().date()
end_date = datetime.now().date() - timedelta(weeks=1)
return MyModel.objects.filter(pub_date__range=(end_date, start_date)).aggregate(Sum('off_hours'))
只是将所有帖子从当前日期减去7天
我想在当天考虑当前时间内的帖子。因此,如果时间是格林威治标准时间15:00,我希望格林尼治标准时间14:59:49的所有帖子回到同一天格林尼治标准时间00:00:01。我怎么能这样做?
我尝试了类似的东西(不是工作
)def get_today_hours(self):
start_time = datetime.now().time()
end_time = datetime.now().time() - timedelta(hours=datetime.today().hour, minutes=0, seconds=0)
return MyModel.objects.filter(pub_date__range=(end_time, start_time))
根据此post on SO,有一种方法可以使用CURDATE()
答案 0 :(得分:2)
您可以执行以下操作
end_time = datetime.now()
start_time = datetime(end_time.year,end_time.month,end_time.day)
这会将end_time设置为实际时间,start_time设置为end_time的同一天,但时间设置为0小时0秒。
答案 1 :(得分:2)
这个怎么样:
from datetime import datetime, timedelta
end_time = datetime.now()
start_time = datetime.combine(end_time, datetime.min.time()) #Reset the hours/time offset
qs = MyModel.objects.filter(pub_date__range=(start_time, end_time))
或者更简单的事情:
qs = MyModel.objects.filter(pub_date__startswith=end_time.date())