【问题标题】:How to get a list of some specific weekdays within a date range in python如何在python中获取日期范围内某些特定工作日的列表
【发布时间】:2020-05-22 05:32:05
【问题描述】:

我需要获取某个日期范围内的星期一列表。

例如:

# selected date range
date_range = ['2019-02-25', '2019-03-25']
# desired output:
mondays = ['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18', '2019-03-25']

# selected date range
date_range = ['2019-02-25', '2019-03-20']
# desired output
mondays = ['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18']

开始日期始终是星期一。

有人知道如何使用 python datetime 生成星期一列表吗?

【问题讨论】:

标签: python python-datetime


【解决方案1】:

这是使用 weekday() 的一种方法。

例如:

import datetime

def get_mondays(date_start, date_end):
    date_start = datetime.datetime.strptime(date_start, "%Y-%m-%d")
    date_end = datetime.datetime.strptime(date_end, "%Y-%m-%d")

    result = []
    while date_start <= date_end:
        if date_start.weekday() == 0:   #0 == Monday
            result.append(date_start.strftime("%Y-%m-%d")) 
        date_start += datetime.timedelta(days=1)

    return result

print(get_mondays('2019-02-25', '2019-03-25'))
print(get_mondays('2019-02-25', '2019-03-20'))

输出:

['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18', '2019-03-25']
['2019-02-25', '2019-03-04', '2019-03-11', '2019-03-18']

【讨论】:

    【解决方案2】:

    如果您可以使用 3rd-party 模块dateutil:

    from dateutil import rrule, parser
    
    def case_of_the_mondays(start,end): 
        mondays = list(rrule.rrule(rrule.WEEKLY,
                                   dtstart=parser.parse(start),
                                   until=parser.parse(end))) 
        return mondays 
    

    结果:

    In [22]: case_of_the_mondays('2019-02-25','2019-03-25')
    Out[22]: 
    [datetime.datetime(2019, 2, 25, 0, 0),
     datetime.datetime(2019, 3, 4, 0, 0),
     datetime.datetime(2019, 3, 11, 0, 0),
     datetime.datetime(2019, 3, 18, 0, 0),
     datetime.datetime(2019, 3, 25, 0, 0)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多