timedelta を使って作成する日付リスト
from datetime import datetime, timedelta # 指定日から7日間のリスト dlist = [datetime.strptime('2020-10-28', '%Y-%m-%d') + timedelta(days=i) for i in range(7)] # 検証 list = [d.strftime('%Y-%m-%d') for d in dlist] print(list)
指定日から7日間のリスト を map(ラムダ関数, シーケンス)で作る
dlist = [d for d in map(lambda a, b=datetime.strptime('2020-10-28', '%Y-%m-%d'): b + timedelta(days=a), range(7))] # 検証 list = [d.strftime('%Y-%m-%d') for d in dlist] print(list)
timedelat( days= )を 、minutes に変えれば、分毎のリストも作れる
# 5分前からのリスト dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), range(6))] # 検証 list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist] print(list)
でも、これは時刻の逆順になってしまうので、昇順にするには、
# リストにしてから、reverse() dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), range(6))] dlist.reverse() # 検証 list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist] print(list)
ちょっと、↑これだと脳がない。 ラムダの前に、逆順にする
dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), reversed(range(6)))] # 検証 list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist] print(list)
今月の1日~末日のリスト
monthrange( 年, 月 ) を使用する
from datetime import datetime, timedelta import calendar today = datetime.now(); dlist = [d for d in map(lambda a, b=datetime(today.year, today.month, 1): b + timedelta(days=a), range(calendar.monthrange(today.year, today.month)[1]))] # 検証 list = [d.strftime('%Y-%m-%d') for d in dlist] print(list)