1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python で先週日曜日の日付を取得する

Last updated at Posted at 2023-01-25

はじめに

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 を使う方法が一番簡潔に先週の日曜日を取得できるのではないかと思います。
もっと良い方法がありましたら、コメントよろしくお願いいたします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?