首页 > 编程知识 正文

calendar日历使用,python万年历函数

时间:2023-05-05 23:48:54 阅读:114665 作者:1458

前言prmonth (和TextCalendar ) HTMLCalendar ).formatmonth )以其他方式实战(每月取得第2周3天)环境并本地化

前言

您可以使用日历库输出日历。 此外,还提供了与日历相关的其他实用函数。 本章详细介绍了日历库的使用规则。

prmonth (和文本日历) (prmonth ) )是生成月份格式文本输出的简单函数。 具体使用方法如下。

运行importcalendarc=calendar.text calendar (calendar.Monday ) c.pr month (2020,4 )可以生成日历字符串格式的数据。

如你所见,日历的开始是从星期一开始的。 这是因为在函数TextCalendar ()中指定了日历的开始日期。 在这里,读者可以自己指定任意一天。

HTMLCalendar ().formatmonth这里是上面的c.prmonth ) )直接替换。 代码如下。

importcalendarc=calendar.text calendar (calendar.Monday ) print (calendar.html calendar ) ).format month (2020,4 )

现在,您将直接返回到在HTML表中定义的日历格式。 使用Django开发时,这种方法非常有用。 而且,细心的读者一定看到了这里每个标签都有class。 在实际使用中,CSS可以丰富这个日历的风格。

把其他方法一一说明很麻烦。 博主在此总结了calendar库各种方法的使用规则:

方法名称参数语义weekday3三个整数参数:年、月、日周日[0-6]isleap1一个整数年闰年leapdays2判断两个整数年之间闰年有多少weekheader1一个整数数字返回与星期对应的缩写参数表示缩写英语长度monthcalendar2两个参数: 月返回一个月的日历矩阵timegm1一个struct_time结构日期将日期转换为时间戳prmonth2两个参数:整数年和月转换为当月的日历prcal1一个参数。 整数年返回全年的日历测试代码如下:

导入日历, datetime c=calendar.text calendar (calendar.Monday ) #返回星期天[0-6] print ] calendar.weekday (2021 12 ) #闰年print 参数表示缩写英语长度的print(calendar.weekheader )2)将日期标记为时间戳print (calendar.month calendar ) (2021, 4 ) )返回要转换为的一个月的日历矩阵print3).timetuple (() )当月的日历print (calendar.pr month (2021,4 ) )返回到日历print

这些函数是常用函数,但实际上,calendar库中有很多迭代函数,可以返回任何数据类型的元组或列表。 如下表所示:

方法名称参数含义yeardays2calendar2的两个整数参数:按年、n月对一个月行序列进行分组,元组为[月号、周[0-6]、月号为0,则不执行任何操作(下同),每三个月一个年、n月有一个组返回日期列表,这是yeardayscalendar2的两个整数参数集,每n个月返回一次日期列表,而monthdatescalendar2的两个整数参数集,年和月是指定年月的周元组是monthdayscalendar2中的两个整数参数(由月号和周数组成),年和月是直接对应于周的日期列表itermonthdates2中的两个整数参数,年和月迭代月对应于日期itermonthdays22中的22个整数参数元组包含与年、月迭代月相对应的日历元组,这些日历元组是当月月号和星期itermonthdays222的32个整数参数,并以设置的星期开始。 元组包含年月日itermonthdays的42个整数参数年,以及与月迭代月相对应的日历元组,以设置的星期开始,元组包含年月日itermonthdays的2个整数参数年

导入日历,datetime c=calendar.text calendar (calendar.Monday ) #从以下所有星期开始用手指

定的星期一为准# 月行序列,元组为(月份号,星期几[0-6]),月份号为0时,不作数(下同),每3个月为一组数据for i in c.yeardays2calendar(2021, width=3): print(i)# 返回datetime.date日期列表,每3个月为一组数据for i in c.yeardatescalendar(2021, 3): print(i)# 返回日期列表,每3个月为一组数据for i in c.yeardayscalendar(2021, 3): print(i)# 返回一个指定年月的周列表,列表日期类型为datetime.datefor i in c.monthdatescalendar(2021, 3): print(i)# 直接返回元组列表,元组由月份号与星期几构成for i in c.monthdays2calendar(2021, 3): print(i, end="")print()# 直接返回星期对应的日期列表for i in c.monthdayscalendar(2021, 3): print(i, end="")print()# 迭代指定的星期数for i in c.iterweekdays(): print(i, end="")print()# 迭代月份对应的日期for i in c.itermonthdates(2021, 4): print(i, end="")print()# 迭代月份对应的星期元组,元组包括当月的月号以及星期几for i in c.itermonthdays2(2021, 4): print(i, end="")print()# 迭代月份对应的日历元组,以星期1开头,元组包括年月日for i in c.itermonthdays3(2021, 4): print(i, end="")print()# 迭代月份对应的日历元组,以星期1开头,元组包括年月日星期几for i in c.itermonthdays4(2021, 4): print(i, end="")# 迭代月份对应的月号整型,以星期1开头print()for i in c.itermonthdays(2021, 4): print(i, end="")

运行之后,效果如下:

实战(获取每月第2个星期3日期)

假如你现在的公司每月的第2个星期3都要召开大会,那么怎么提前获取日期提醒自己呢?calendar库实现这种操作非常的容易。具体代码如下所示:

import calendarfor month in range(1, 13): # 返回一个月的日历矩阵 c = calendar.monthcalendar(2021, month) first_week = c[0] second_week = c[1] third_week = c[2] if first_week[calendar.WEDNESDAY] == 0: myDate = second_week[calendar.WEDNESDAY] else: myDate = third_week[calendar.WEDNESDAY] print(calendar.month_abbr[month], myDate)

运行之后,效果如下:

本地化环境

上面我们返回的日历大多都是英文的。这在中文网页中是不是显示的非常不友好。没关系,我们可以使用本地化环境函数LocaleTextCalendar或LocaleHTMLCalendar实现中文日历的显示。

具体代码如下:

import calendarc = calendar.LocaleTextCalendar(locale="zh_CN")c.prmonth(2021, 4)c = calendar.LocaleHTMLCalendar(locale="zh_CN")print(c.formatmonth(2021, 4))

运行之后,效果如下:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。