我需要在 python 中计算一周的日期
我需要这个
year = 2012
week = 23
(a,b) = func (year,week)
print a
print b
>>>2012-04-06
>>>2012-06-10
你可以帮帮我吗 ?
日期对象包含一个weekday()
方法。
这将返回 0 表示周一 6 表示周日。
(来自谷歌搜索)这是一种解决方案:http: //www.protocolostomy.com/2010/07/06/python-date-manipulation/)
我认为这可以不那么冗长,所以这是我的尝试:
def week_magic(day):
day_of_week = day.weekday()
to_beginning_of_week = datetime.timedelta(days=day_of_week)
beginning_of_week = day - to_beginning_of_week
to_end_of_week = datetime.timedelta(days=6 - day_of_week)
end_of_week = day + to_end_of_week
return (beginning_of_week, end_of_week)
有点过时的答案,但是有一个名为isoweek的不错的模块可以真正完成这个技巧。要回答原始问题,您可以执行以下操作:
from isoweek import Week
week = Week(2012, 23)
print(week.monday())
print(week.sunday())
希望这对任何人都有帮助。
I think @Anthony Sottile's answer should be this:
def week_magic(day):
day_of_week = day.weekday()
to_beginning_of_week = datetime.timedelta(days=day_of_week)
beginning_of_week = day - to_beginning_of_week
to_end_of_week = datetime.timedelta(days=6 - day_of_week)
end_of_week = day + to_end_of_week
return (beginning_of_week, end_of_week)
It works!
我认为他正在寻找的答案是在 datetime.isocalendar(datetime) 它返回一个包含 ISO 年份、周数和工作日的 3 元组。
从任何特定年份(即“2015”),人们可以确定第一周的第一天,然后从那里继续使用 timedelta 函数添加天数以查找请求的特定周。有了这些信息,就可以返回该周的第一天和最后一天。