3

我需要在 python 中计算一周的日期

我需要这个

year = 2012
week = 23
(a,b) = func (year,week)
print a
print b

>>>2012-04-06
>>>2012-06-10

你可以帮帮我吗 ?

4

4 回答 4

13

日期对象包含一个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)
于 2012-06-06T05:27:25.430 回答
5

有点过时的答案,但是有一个名为isoweek的不错的模块可以真正完成这个技巧。要回答原始问题,您可以执行以下操作:

from isoweek import Week    

week = Week(2012, 23)
print(week.monday())
print(week.sunday())

希望这对任何人都有帮助。

于 2016-12-05T18:43:36.370 回答
3

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!

于 2013-09-17T04:21:48.567 回答
0

我认为他正在寻找的答案是在 datetime.isocalendar(datetime) 它返回一个包含 ISO 年份、周数和工作日的 3 元组。

从任何特定年份(即“2015”),人们可以确定第一周的第一天,然后从那里继续使用 timedelta 函数添​​加天数以查找请求的特定周。有了这些信息,就可以返回该周的第一天和最后一天。

于 2015-10-08T03:49:51.053 回答