はじめに
Python で先週の日曜日を取得したかったのですが、調べてもあまり良い解答が得られなかったので、忘備録として残します。
1. isoweekday
datetime モジュールにある date オブジェクトの isoweekday メソッド。
isoweekday は月曜日から日曜日を 1 ~ 7
として出力します。
from datetime import date, timedelta
today = date.today()
last_week_sunday = today - timedelta(7 + today.isoweekday() % 7)
today.isoweekday() % 7
部分で日曜日から土曜日を 0 ~ 6
として出力するよう変換し、先週の日曜日は今日から 7 日と何日前か計算しています。
2. weekday
datetime モジュールにある date オブジェクトの weekday メソッド。
weekday は月曜日から日曜日を 0 ~ 6
として出力します。
from datetime import date, timedelta
today = date.today()
last_week_sunday = today - timedelta(7 + (today.weekday() + 1) % 7)
today.weekday()
に 1 を足すことで isoweekday と同じ処理を行っています。
3. strftime("%u")
datetime モジュールにある datetimeオブジェクト・ date オブジェクトの strftime メソッド。
strftime は日時情報を任意のフォーマットで文字列に変換できます。
フォーマット文字列に %u
を指定すると月曜日から日曜日を '1' ~ '7'
として出力します。
from datetime import date, timedelta
today = date.today()
last_week_sunday = today - timedelta(7 + int(today.strftime("%u")) % 7)
strftime では出力が文字列であるため、int
で整数に変換した後、isoweekday と同じ処理を行っています。
おわりに
結論としては、isoweekday を使う方法が一番簡潔に先週の日曜日を取得できるのではないかと思います。
もっと良い方法がありましたら、コメントよろしくお願いいたします。