【问题标题】:Split days between 2 dates into batch of 30 or 31 and return the start date in each case将 2 个日期之间的天数拆分为 30 或 31 个批次,并在每种情况下返回开始日期
【发布时间】:2021-01-23 14:48:26
【问题描述】:

我想获取两个提到的日期之间每个月的开始日期。

开始日期是21st jan 2020,结束日期是30 oct 2020 我希望输出采用以下格式:

21 Jan 2020
31 jan 2020
1st feb 2020
28 feb 2020
1st march 2020
31st march 2020
.
.
.
.
1 st oct 2020
30 th oct 2020

我们如何在 python 中做到这一点?

【问题讨论】:

    标签: python datetime


    【解决方案1】:

    使用dateutil module's rrule 子模块处理任何类型的日期/时间重复。

    from dateutil import rrule, parser
    start = parser.parse('Jan 21 2020')
    end   = parser.parse('Oct 30 2020')
    date_list = [start]
    date_list.extend(list(rrule.rrule(rrule.MONTHLY, bymonthday=(-1,1), dtstart=start, until=end)))
    date_list.append(end)
    print(date_list)
    

    输出-

    [datetime.datetime(2020, 1, 21, 0, 0), datetime.datetime(2020, 1, 31, 0, 0), datetime.datetime(2020, 2, 1, 0, 0), datetime.datetime(2020, 2, 29, 0, 0), datetime.datetime(2020, 3, 1, 0, 0), datetime.datetime(2020, 3, 31, 0, 0), datetime.datetime(2020, 4, 1, 0, 0), datetime.datetime(2020, 4, 30, 0, 0), datetime.datetime(2020, 5, 1, 0, 0), datetime.datetime(2020, 5, 31, 0, 0), datetime.datetime(2020, 6, 1, 0, 0), datetime.datetime(2020, 6, 30, 0, 0), datetime.datetime(2020, 7, 1, 0, 0), datetime.datetime(2020, 7, 31, 0, 0), datetime.datetime(2020, 8, 1, 0, 0), datetime.datetime(2020, 8, 31, 0, 0), datetime.datetime(2020, 9, 1, 0, 0), datetime.datetime(2020, 9, 30, 0, 0), datetime.datetime(2020, 10, 1, 0, 0), datetime.datetime(2020, 10, 30, 0, 0)]
    

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多