如何解决如何获得一个月中至少有4天的一个月中的最后一个星期六至星期五?
我正在尝试获取7天日期范围的开始/结束日期,其中满足以下条件(给定一个月和一年):
- 从星期六开始
- 在下一个星期五结束
- 给定月份的7天中至少有4天(意味着下个月最多可以有3天)
- 是满足这些条件的最后日期范围
例如,如果我要得到2020年8月的这段时间,结果将是8/22至8/28。
如果我在2020年6月做同样的事情,结果将是6/27至7/3。
有人有什么想法吗?预先感谢!
解决方法
请测试以下代码。如果您让我知道结果,我将非常高兴。
import datetime,calendar
import dateparser
def get_date_range(input_dt):
r = dateparser.parse(input_dt)
year = r.year
month = r.month
day = r.day
last_date = calendar.monthrange(year,month)[1]
full_end_date = dateparser.parse(f"{last_date}/{month}/{year}")
lastFriday = full_end_date
oneday = datetime.timedelta(days=1)
while lastFriday.weekday() != calendar.SATURDAY:
lastFriday -= oneday
days_in_given_month = (full_end_date - lastFriday).days + 1
if days_in_given_month < 4:
start_date = lastFriday - datetime.timedelta(days=7)
end_date = start_date + datetime.timedelta(days=6)
start_date_str = start_date.strftime('%m/%d/%Y')
end_date_str = end_date.strftime('%m/%d/%Y')
else:
end_date = lastFriday + datetime.timedelta(days=6)
start_date_str = lastFriday.strftime('%m/%d/%Y')
end_date_str = end_date.strftime('%m/%d/%Y')
return [start_date_str,end_date_str]
input_dt = "June 2020"
# input_dt = "August 2020"
r = get_date_range(input_dt)
print(r)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。