从日期范围生成一周的开始和结束日期的列表清单 [英] Generate list of list for start and end date of week from date range

查看:116
本文介绍了从日期范围生成一周的开始和结束日期的列表清单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过输入开始日期和结束日期来生成星期列表. 假设开始日期是 2019-05-01 ,结束日期是 2019-05-31 那么我想生成一个像这样的列表的列表

I'm trying to generate week list by entering the start date and end date. Let's say if the start date is 2019-05-01 and end date is 2019-05-31 then I would like to generate a list of a list like this

[['2019-04-29','2019-05-05'],['2019-05-06','2019-05-12'],['2019-05-13','2019-05-19'],['2019-05-20','2019-05-26'],['2019-05-27','2019-06-02']]

谢谢.

推荐答案

您可以使用calendar内置模块(

You could use calendar builtin module (doc) for getting the weeks:

import calendar
from datetime import datetime, timedelta

def get_all_weeks(start_date, end_date):
    start_date = datetime.strptime(start_date, '%Y-%m-%d').date()
    end_date = datetime.strptime(end_date, '%Y-%m-%d').date()
    one_day, one_week = timedelta(days=1), timedelta(days=7)
    current_week_start = calendar.Calendar().monthdatescalendar(start_date.year, start_date.month)[0][0]
    while True:
        if current_week_start + one_week <= start_date:
            current_week_start += one_week
            continue
        if current_week_start > end_date:
            break
        yield [current_week_start.strftime('%Y-%m-%d'), (current_week_start + one_week - one_day).strftime('%Y-%m-%d')]
        current_week_start += one_week

d_start = '2019-05-01'
d_end = '2019-05-31'

weeks = [*get_all_weeks(d_start, d_end)]

from pprint import pprint
pprint(weeks)

打印:

[['2019-04-29', '2019-05-05'],
 ['2019-05-06', '2019-05-12'],
 ['2019-05-13', '2019-05-19'],
 ['2019-05-20', '2019-05-26'],
 ['2019-05-27', '2019-06-02']]

这篇关于从日期范围生成一周的开始和结束日期的列表清单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆