calendar -- 日历相关│Python标准库

前情提示: 测试代码中,右尖括号(>)表示命令行中输入的命令; 单独一行并以井字符(#)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。

  • 系统类型: Windows 10
  • python 版本: Python 3.9.0

calendar 模块提供了与日历有关的函数与类。其中既包含了可方便用于计算或信息处理的日历格式,也包含了可直观展示的日历格式,甚至有用于网页展示的 html 格式.

calendar 模块提供了三个类,也提供了一些属性和函数进行快捷操作。calendar 模块提供的函数将分布在同功能的类中介绍。

calendar 模块提供了 4 个属性,所有属性返回的数据都是可迭代对象:

  • calendar.day_name : 在当前语言环境下表示星期几的数组
  • calendar.day_abbr : 在当前语言环境下表示星期几缩写的数组
  • calendar.month_name : 在当前语言环境下表示一年中月份的数组。这里为了现实习惯,一月的月号为 1,所以此数组的元素个数为 13 个,其中索引值为 0 的元素的值为空
  • calendar.month_abbr : 在当前语言环境下表示月份简写的数组。这里为了现实习惯,一月的月号为 1,所以此数组的元素个数为 13 个,其中索引值为 0 的元素的值为空
print(list(calendar.day_name))
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print(list(calendar.day_abbr))
# ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
print(list(calendar.month_name))
# ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
print(list(calendar.month_abbr))
# ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

Calendar 类

class calendar.Calendar(firstweekday=0)
参数:
    firstweekday: int, 指定一周的第一天, 0 表示星期一, 6 表示星期天, 默认为 0

创建已 Calendar 对象,Calendar 对象提供了一些方法,这些方法可以用于各种场景的与日历有关的数据,得到的数据并不便于查看,但方便计算。

iterweekdays()
iterweekdays()
返回值:
    可迭代对象

返回一个可迭代对象,包含一星期对应的枚举值,排序在第一个元素的枚举值与类参数 firstweekday 的值一致。

import calendar

cc = calendar.Calendar(1)
print(list(cc.iterweekdays()))
# [1, 2, 3, 4, 5, 6, 0]

cc = calendar.Calendar(4)
print(list(cc.iterweekdays()))
# [4, 5, 6, 0, 1, 2, 3]

PS: 无论一周的第一天设置为星期几,这与七天中每天对应的枚举值无关。星期一的枚举值一定是 0,星期二的枚举值一定是 1,以此类推,星期天的枚举值一定是 6

itermonthdates()
itermonthdates(year, month)
参数:
    year: 年
    month: 月
返回值:
    可迭代对象

返回一个可迭代对象,包含某年某月当月的全部日期,日期对象为 datetime 对象。

若本月月初和月末不是一个完整的周,也会返回其他月份的日期用于组成一个完整的日期。也就是说某一周的日期里,包含指定月份的日期,也包含其他月份的日期,那么本方法返回的日期中也包含这些在同一周内的其他月份的日期。

cc = calendar.Calendar(0)
print(list(cc.itermonthdates(2021, 1)))
# [
# datetime.date(2020, 12, 28), datetime.date(2020, 12, 29),
# datetime.date(2020, 12, 30), datetime.date(2020, 12, 31),
# datetime.date(2021, 1, 1), datetime.date(2021, 1, 2),
# ......
# datetime.date(2021, 1, 30), datetime.date(2021, 1, 31)
# ]

PS: 此模块的一些方法返回值内容过多,此文章将会省略一部分返回内容。

<
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值