在python中获取给定星期数的第一天和最后一天

时间:2018-07-05 15:11:10

标签: python datetime

我需要一个函数,该函数分别返回给定星期数(和年份)的第一天和最后一天

在1月1日不是星期一的几周中有一个困难,因此我无法使用标准的datetime.datetime.strptime()

2 个答案:

答案 0 :(得分:4)

这是解决方案:

import calendar
import datetime
from datetime import timedelta

def get_start_and_end_date_from_calendar_week(year, calendar_week):       
    monday = datetime.datetime.strptime(f'{year}-{calendar_week}-1', "%Y-%W-%w").date()
    return monday, monday + datetime.timedelta(days=6.9)

我扩展了this post的伟大逻辑。

更新

第一个日历周有一个陷阱。某些国家/地区对第一周的处理方式有所不同。例如,在德国,如果一月份的第一周少于4天,则将其计为上一年的最后一周。 Wikipedia处有一个概述。

答案 1 :(得分:0)

在此找到的另一个版本是完美无缺的:Django Official Documentation

##
# Python's program to get start and end of week

from datetime import datetime, timedelta

date_str = '2018-01-14'
date_obj = datetime.strptime(date_str, '%Y-%m-%d')

start_of_week = date_obj - timedelta(days=date_obj.weekday())  # Monday
end_of_week = start_of_week + timedelta(days=6)  # Sunday
print(start_of_week)
print(end_of_week)