Calculating Dates
此案例用calendar模块计算每月特定事件对应的日期。例如,某单位小组会议在每月的第二个星期四召开,计算一年内这个日子,使用monthcalendar()
Although the calendar module focuses mostly on printing full calendars in various formats, it also provides functions useful for working with dates in other ways, such as calculating dates for a recurring event. For example, the Python Atlanta Users’ Group meets on the second Thursday of every month. To calculate the dates for the meetings for a year, use the return value of monthcalendar().
To calculate the group meeting dates for a year, assuming they are always on the second Thursday of every month, look at the output of monthcalendar()
The following is the example program’s code:
import calendar
import sys
year = int(sys.argv[1]) # 运行程序时输入的年份参数,转成整型, 在控制台下输入: python 程序名.py year(例如2023)
# show every month,
for month in range(1, 13):
# Compute the dates for each week that overlaps the month,
c = calendar.monthcalendar((year, month))
first_week = c[0]
second_week = c[1]
third_week = c[2]
# If there is a Thursday in the first week,
# the second Thursday is in the second week.
# Otherwise, the second Thursday must be in
# the third week.
if first_week[calendar.THURSDAY]:
meeting_date = second_week[calendar.THURSDAY]
else:
meeting_date = third_week[calendar.THURSDAY]
print('{:>3} {:>2}'.format(calendar.month_abbr[month], meeting_date))
Thus, the meeting schedule for the year is as follows:
D:\My_Project>python date_time_demo.py 2023
Jan 12
Feb 9
Mar 9
Apr 13
May 11
Jun 8
Jul 13
Aug 10
Sep 14
Oct 12
Nov 9
Dec 14
D:\My_Project>