Pythonで何年何月の何回目の何曜日を取る方法
具体的には 2019年1月の初回の月曜日を取得する方法で説明します。
例えば2019年1月のカレンダーはこんな感じ
# January 2019
# Su Mo Tu We Th Fr Sa
# 1 2 3 4 5
# 6 7 8 9 10 11 12
# 13 14 15 16 17 18 19
# 20 21 22 23 24 25 26
# 27 28 29 30 31
なので2019年の第一月曜日は1/8日になるんだけど、pythonの標準モジュールのカレンダーで指定した月のカレンダーを使うと週毎に取るために週単位に取れるので12/31日(月)が最初の月曜日になってしまう。。。
import calendar c = calendar.Calendar() c.itermonthdates(2019, 1) # リストで帰ってくる [ datetime.date(2018, 12, 31), # Monday -> start week datetime.date(2019, 1, 1), # Tuesday datetime.date(2019, 1, 2), # Wednesday datetime.date(2019, 1, 3), ・・・ datetime.date(2019, 2, 3), ]
import calendar c = calendar.Calendar() mondey = 0 index = 0 # d.weekday(): 曜日の情報が0(Monday)〜6(Sunday)で取れる [d for d in c.itermonthdates(2019, 1) if d.weekday() == mondey and d.month == month][index]
って書くと2019年1月7日が取れるよ!
カレンダーモジュールってあまり見かけないけど割と便利なので必要に応じて使っていきたいなって思った。
カレンダーのドキュメント見ると結構色々なことが出来るみたいなので、頑張って処理を書かずにライブラリにどんどん助けてもらおう