週にはこの値が定義されていません。 開始週と開始月の間のシフトは、ほとんどの場合問題を引き起こします。与えられた月の曜日のN番目の出現を取得するには?
この値を計算するPythonライブラリまたはアルゴリズムはありますか?
週にはこの値が定義されていません。 開始週と開始月の間のシフトは、ほとんどの場合問題を引き起こします。与えられた月の曜日のN番目の出現を取得するには?
この値を計算するPythonライブラリまたはアルゴリズムはありますか?
あなたは月の日数をループし、そのN番目の平日に遭遇してきたかをカウントすることで、これを計算することができます。たとえば
import datetime
def get_n_weekday(year, month, day_of_week, n):
count = 0
for i in xrange(1, 32):
try:
d = datetime.date(year, month, i)
except ValueError:
break
if d.isoweekday() == day_of_week:
count += 1
if count == n:
return d
return None
:ある2016年1月のget_n_weekday(2016, 1, 1, 1)
=最初の月曜日datetime.date(2016, 1, 4)
。
これは月曜日が1であることを意味しdate.isoweekday()
を使用して、日曜日はシメオンの答えより7
さらに二つの単純ソリューションです:
def f1(day_of_month):
ret = None
if (day_of_month % 7 == 0):
ret = day_of_month/7
else:
ret = (day_of_month//7) + 1
return ret
def f2(day_of_month):
actual_day = day_of_month
counter = 0
while actual_day > 0:
actual_day = actual_day - 7
counter = counter + 1
return counter
あなたの解決策は正しいですが、私は2つの単純な解決策を見つけました。 。 – user1802693