2017-06-01 9 views
0

Pythonを使用して来年の毎月最後の火曜日の日付を印刷するにはどうすればよいですか?Pythonを使用して来年の各月の最後の火曜日の日付を

例えば出力された最初の行は次のようになります。30 /月/ 2018

私は最初の3文字の月の完全な名前を持ってしたくありません!

現在、私は来年取得する方法を考え出した:

import datetime 

now = datetime.datetime.now() 
next_year = now.year + 1 

は誰でも助けてくださいことはできますか?

答えて

3

calendarモジュールは、このために最適です:

あなたがしたいだけのよう 省略ヶ月の配列であるcalendar.month_abbrを使用することができます。

weekは、月曜日から始まる曜日を表す配列であるため、火曜日はweek[1]となります。

import calendar 
import datetime 

now = datetime.datetime.now() 
next_year = now.year + 1 

for month in range(1, 13): 
    last_tuesday = max(week[1] for week in calendar.monthcalendar(next_year, month)) 
    print('{}/{}/{}'.format(last_tuesday, calendar.month_abbr[month], next_year)) 

出力:

30/Jan/2018 
27/Feb/2018 
27/Mar/2018 
24/Apr/2018 
29/May/2018 
26/Jun/2018 
31/Jul/2018 
28/Aug/2018 
25/Sep/2018 
30/Oct/2018 
27/Nov/2018 
25/Dec/2018 
+0

感謝を記述します –

1

私もLastWeekOfMonthオブジェクトDateOffsetパンダをお勧めします。

「毎月最終火曜日 」のような月の最終週に毎月の日付このため

from pandas.tseries.offsets import LastWeekOfMonth 

def last_tues(year): 
    return (pd.date_range('1/1/' + str(year), periods=12, freq='M') 
      - LastWeekOfMonth(n=1, weekday=1)).strftime('%d/%b/%Y')) 

last_tues(2018) 
Out[31]: 
array(['30/Jan/2018', '27/Feb/2018', '27/Mar/2018', '24/Apr/2018', 
     '29/May/2018', '26/Jun/2018', '26/Jun/2018', '28/Aug/2018', 
     '25/Sep/2018', '30/Oct/2018', '27/Nov/2018', '25/Dec/2018'], 
     dtype='<U11') 
関連する問題