谨防!如果您想定义自己的星期数,可以使用第一个问题中提供的生成器表达式,顺便说一下,它给出了一个很棒的答案)。如果要遵循ISO约定的周数,则需要小心:
一年的第一个日历周是包括该年的第一个星期四和日历年的最后一个日历周的那个,是紧接在下一日历年的第一个日历周之前的一周。
因此,例如, 2010年1月1日和2日不是2010年的第一周 ,而是2009年的第53周。
Python提供了一个使用ISO日历查找星期数的模块:
示例代码:
h[1] >>> import datetimeh[1] >>> Jan1st = datetime.date(2010,1,1)h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of weekh[1] >>> print Year,WeekNum,DOW2009 53 5
再次注意,2010年1月1日如何对应于2009年的第53周。
使用上一个答案中提供的生成器:
from datetime import date, timedeltadef allsundays(year): """This pre was provided in the previous answer! It's not mine!""" d = date(year, 1, 1) # January 1st d += timedelta(days = 6 - d.weekday()) # First Sunday while d.year == year: yield d d += timedelta(days = 7)Dict = {}for wn,d in enumerate(allsundays(2010)): # This is my only contribution! Dict[wn+1] = [(d + timedelta(days=k)).isoformat() for k in range(0,7) ]print Dict
Dict包含您要求的字典。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)