我在计算“一年中的几周”中两个日期之间的差异。我可以得到datetime对象和days等,但不能得到周数。当然,我不能减去日期,因为周末不能用它来保证。
我试着用d1.isocalendar()[1]
和减去d2.isocalendar()[1]
得到周数,但问题是isocalendar()[1]
将December 31, 2012
返回为第1周(应该是正确的),但这意味着我的逻辑不能跨越这个日期。
作为参考,这里是我的完整代码:
def week_no(self):
ents = self.course.courselogentry_set.all().order_by('lecture_date')
l_no = 1
for e in ents:
if l_no == 1:
starting_week_of_year = e.lecture_date.isocalendar()[1] # get week of year
initial_year = e.lecture_date.year
if e == self:
this_year = e.lecture_date.year
offset_week = (this_year - initial_year) * 52
w_no = e.lecture_date.isocalendar()[1] - starting_week_of_year + 1 + offset_week
break
l_no += 1
return w_no
有了这个密码,2012年12月31日的讲座结束时是-35。
这是一个非常简单的解决方案,每个人都能理解的编码更少。
如何计算各日期后几周内星期一之间的周差?在下面的代码中,
monday1
是d1
(同一周)的星期一或之前:如果两个日期都在一周内,则返回0,如果连续两周,则返回1,以此类推
您可能需要参考Python食谱(2005版)Recipe 3.3。下面的代码片段来自食谱,可以满足您的需求。
相关问题 更多 >
编程相关推荐