繁体   English   中英

使用Python打印下一年每个月的最后一个星期二的日期

[英]Print date of last Tuesday of each month of next year using Python

如何使用Python打印明年的每个月的最后一个星期二的日期。

例如,输出的第一行将是:30 / Jan / 2018

我不想只显示前三个字符来表示月份的全名!

目前,我已经弄清楚如何获得明年的成绩:

import datetime

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

谁能帮忙吗?

日历模块非常适合:

您可以使用日历。 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

我还建议熊猫DateOffset对象LastWeekOfMonth

描述每月的最后一周中的每月日期,例如“每月的最后一个星期二”

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM