Python数据分析基础(一)--- 运用calendar模块制作日历

calendar 模块定义了Calendar类,它封装了值的计算,比如计算给定月份或年份中周的日期。 此外,TextCalendar 和 HTMLCalendar 类可以生成预格式化的输出。

1、输出某一年的某一个月份

prmonth() #生成一个月的格式化文本输出。

import calendar
c = calendar.TextCalendar(calendar.SUNDAY)
c.prmonth(2019, 7)

Python数据分析基础(一)--- 运用calendar模块制作日历_第1张图片

2、生成月份行

要以不同于其中一个可用默认值的格式生成输出,请使用 calendar 计算日期并将值组织为周和月 范围,然后迭代结果。 ​ Calendar模块的 weekheader(),monthcalendar()和 yeardays2calendar() 方法对此特别有用。 ​ 调用yeardays2calendar()会生成一系列“月份行”列表。 l 每个列表包括月份作为另一个周列表。这几周是由日期编号(1-31)和工作日编号(0-6)组成的 元组列表。超出月份的天数为 0

import calendar
import pprint
​
cal = calendar.Calendar(calendar.SUNDAY)
​
cal_data = cal.yeardays2calendar(2019, 7)#以7个月为一行
print('len(cal_data)      :', len(cal_data))
​
top_months = cal_data[0]#把第一行(2019.1-2019.7)赋值给top_months
print('len(top_months)    :', len(top_months))
​
first_month = top_months[0]#在前7个月中取第一个月,即2019年一月
print('len(first_month)   :', len(first_month))
​
print('first_month:')
pprint.pprint(first_month, width=65)

运行结果:Python数据分析基础(一)--- 运用calendar模块制作日历_第2张图片

3、生成一整年的日历

import calendar
​
cal = calendar.TextCalendar(calendar.SUNDAY)
print(cal.formatyear(2019, 2, 1, 1, 3))

运行结果

Python数据分析基础(一)--- 运用calendar模块制作日历_第3张图片

4、找到每个月的指定第几周,计算日期

虽然日历模块主要侧重于以各种格式打印完整日历,但它还提供了以其他方式处理日期的有用功能,例如计算重 复事件的日期。 ​ 例如,Python 亚特兰大用户组在每个月的第二个星期四开会。要计算一年的会议日期,请使用 monthcalendar():

import calendar
import sys
​
#year = int(sys.argv[1])
year = 2019
# 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))
​
    

运行结果:

Jan: 10 Feb: 14 Mar: 14 Apr: 11 May: 9 Jun: 13 Jul: 11 Aug: 8 Sep: 12 Oct: 10 Nov: 14 Dec: 12

ps:用这个功能还可以用来找每一年的父亲节母亲节等。

你可能感兴趣的:(Python学习笔记,python,数据分析)