Pythonで曜日を取得する
Pythonで指定した日付の曜日を取得してみます。
目次
dateオブジェクト
datetimeモジュールを使って曜日を取得します。
まずはatetimeオブジェクトを作ります。
>>> import datetime
>>> a = datetime.datetime.strptime('2019/1/1', '%Y/%m/%d')
>>> a
datetime.datetime(2019, 1, 1, 0, 0)
2019年1月1日は火曜日です。
strftimeで曜日を表示する
strftimeメソッドでdatetimeオブジェクトを文字列に変換する際に、曜日を出力するように指定します。
>>> import datetime
>>> a = datetime.datetime.strptime('2019/1/1', '%Y/%m/%d')
>>> a.strftime('%a')
'Tue'
>>> a.strftime('%A')
'Tuesday'
>>> a.strftime('%w')
'2'
ディレクティブ |
内容 |
---|---|
%a |
曜日名を短縮形で表示します。 |
%A |
曜日名を表示します。 |
%w |
日曜日を0、土曜日を6として、曜日を数字文字で表示します。 |
曜日名の表記の仕方は、ロケールによって変わります。上記の例はja_JPです。
datetimeオブジェクトのメソッドで曜日を調べる
調べた結果が整数の方が何かと使い勝手が良いので、datetimeオブジェクトのメソッドを使って曜日を調べてみます。
>>> import datetime
>>> a = datetime.datetime.strptime('2019/1/1', '%Y/%m/%d')
>>> a.weekday()
1
>>> a.isoweekday()
2
>>> a.isocalendar()
(2019, 1, 2)
ret1 = datetime.weekday()
ret2 = datetime.isoweekday()
ret3 = datetime.isocalendar()
変数 |
型 |
内容 |
---|---|---|
ret1 |
int |
weekday()は、月曜日を0、日曜日を6として、曜日を整数で返します。 |
ret2 |
int |
isoweekday()は、月曜日を1、日曜日を7として、曜日を整数で返します。 |
ret3 |
tuple |
isocalendar()は、ISO年、ISO週番号、ISO曜日のタプルを返します。 |
次の〇曜日の日付を調べる
datetimeモジュールを使って、次の〇曜日の日付を調べてみます。
import datetime
a = datetime.datetime.strptime('2019/1/1', '%Y/%m/%d')
current_weekday = a.weekday()
target_weekday = 0 # 0:月曜日 1:火曜日 ... 6:日曜日
if current_weekday < target_weekday:
diff = target_weekday - current_weekday
else:
diff = target_weekday - current_weekday + 7
diff_days = datetime.timedelta(days=diff)
b = a + diff_days
print(b.strftime('%Y-%m-%d %A'))
出力
2019-01-07 Monday
〇週目の〇曜日の日付を調べる
calendarモジュールを使って、〇週目の〇曜日を調べてみます。ゴミ回収日などによくある設定ですね。
import calendar
import datetime
cal = calendar.Calendar()
YEAR = 2019
MONTH = 1
target_weekday = 1 # 0:月曜日 1:火曜日 ... 6:日曜日
target_weeknum = -1 # 0:第1週 1:第2週 ... -1:最終週
days = []
for i in cal.itermonthdays2(YEAR, MONTH):
if i[0] > 0 and i[1] == target_weekday:
days.append(i)
d = datetime.date(YEAR, MONTH, days[target_weeknum][0])
print(d.strftime('%Y-%m-%d %A'))
出力
2019-01-29 Tuesday
上記のコードの中のdaysという変数が、指定した曜日の(日付、曜日)というタプルのリストになります。このリストのインデックス0の項目が第1週目の指定曜日の日付になるわけです。インデックスに-1を指定すれば、指定曜日の最終の日付を取得できます。
公開日
広告