如果我有一个特定的周数(例如51)和给定的一年(例如2008年),我如何找到同一周的第一个星期一的日期?
非常感谢
>>> import time >>> time.asctime(time.strptime('2008 50 1', '%Y %W %w')) 'Mon Dec 15 00:00:00 2008'
假设你一周的第一天是星期一,请使用%U
而不是%W
在你一周的第一天是星期天.有关详细信息,请参阅strptime的文档.
更新:固定周数.该%W
指令从0开始,因此第51周将输入50,而不是51.
PEZ和Gerald Kaszuba的解决方案工作假设1月1日将始终在给定年份的第一周.这个假设对于ISO日历是不正确的,请参阅Python的文档以供参考.例如,在ISO日历中,2010年第1周实际上从1月4日开始,2010年1月1日是在2009年第53周.与ISO日历兼容的解决方案:
from datetime import date, timedelta def week_start_date(year, week): d = date(year, 1, 1) delta_days = d.isoweekday() - 1 delta_weeks = week if year == d.isocalendar()[0]: delta_weeks -= 1 delta = timedelta(days=-delta_days, weeks=delta_weeks) return d + delta
from datetime import date, timedelta def first_monday(year, week): d = date(year, 1, 4) # The Jan 4th must be in week 1 according to ISO return d + timedelta(weeks=(week-1), days=-d.weekday())
这似乎有效,假设第一周可以在去年的某一天有一个星期一下降.
from datetime import date, timedelta def get_first_dow(year, week): d = date(year, 1, 1) d = d - timedelta(d.weekday()) dlt = timedelta(days = (week - 1) * 7) return d + dlt