前言

工作上的爬蟲工具需要用到模擬使用者輸入
202412、202501、202502… 這種情況

原本直接計算起訖日 累計+1
但會遇到跨年度可能變成202413的問題

改一下程式邏輯應該也可以
但是用第三方函式庫看起來程式碼比較簡潔
所以記錄一下用dateutil下的rrule工具的過程


安裝dateutil

1
pip install python-dateutil

計算間隔月份

範例:

  • 原程式

    遇到跨年度會有bug

1
2
3
4
5
6
7
8
start_date = int(input('請輸入起始日期(YYYYMM):'))
end_date = int(input('請輸入結束日期(YYYYMM:)'))
period = end_date - start_date +1

for i in range(period):
date = start_date +i

print(date)

  • 使用rrule
1
2
3
4
5
6
7
8
9
from dateutil import rrule
from datetime import datetime

start_date = datetime.strptime(input('請輸入起始日期(YYYYMM):'),'%Y%m')
end_date = datetime.strptime(input('請輸入結束日期(YYYYMM):'),'%Y%m')
dates = rrule.rrule(rrule.MONTHLY, dtstart=start_date, until=end_date)
for date in dates:
date = date.strftime('%Y%m')
print (date)