仕事で良く用いる日付処理をまとめました。参考になれば幸いです。
1.指定期間内の日付リストを取得
関数定義:
input: 開始日、終了日 ※datetime
output: 開始日から終了日までの日付のリスト ※datetime
from typing import List
from datetime import datetime, timedelta
def get_dt_list(start_date: datetime, end_date: datetime) -> List[datetime]:
out_list = []
term_days = (end_date - start_date).days + 1
for i in range(term_days):
out_list.append(
start_date + timedelta(days=i)
)
return out_list
実行例:
start_date = datetime(2022, 11, 29)
end_date = datetime(2022, 12, 3)
get_dt_list(start_date, end_date)
実行例の出力:
[datetime.datetime(2022, 11, 29, 0, 0),
datetime.datetime(2022, 11, 30, 0, 0),
datetime.datetime(2022, 12, 1, 0, 0),
datetime.datetime(2022, 12, 2, 0, 0),
datetime.datetime(2022, 12, 3, 0, 0)]
2.対象月の月末を取得
関数定義:
input: 対象月の年、月
output: 対象月の月末 ※datetime
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
def get_end_of_month(year: int, month: int) -> datetime:
# 対象月の初日
begin_dt = datetime(year, month, 1)
# 翌月の初日
next_dt = begin_dt + relativedelta(months=1)
# 翌月の前日(=対象月の末日)
end_dt = next_dt + timedelta(days=-1)
return end_dt
実行列:
year = 2021
month = 11
get_end_of_month(year, month)
実行例の出力:
datetime.datetime(2021, 11, 30, 0, 0)