Python编程手册系列 - 日历、日期、时间相关内建模块详解

简介: Python编程手册系列 - 日历、日期、时间相关内建模块详解

Python - 日历calendar、日期datetime、时间time模块详解


博主精心制作了该系列彩色高亮的动态链接模块手册,预期该手册比阅读纸质书籍有更友好、更便捷、更让人舒适的使用体验。希望大家喜欢。


>点击此跳转到目录

1.日历模块calendar

>回目录

1.1 Calendar类

class calendar.Calendar(firstweekday=0)

创建一个 Calendar 对象。

  • firstweekday 是一个整数,用于指定一周的第一天。
  • 0 是星期一(默认值),6 是星期天。

iterweekdays()

返回一个迭代器:

  • 迭代器的内容为一星期的数字。
  • 迭代器的第一个值与 firstweekday 属性的值一至。

itermonthdates(year, month)

返回一个迭代器:

  • 迭代器的内容为 year 年 month 月(1-12)的日期。
  • 这个迭代器返回当月的所有日期 ( datetime.date 对象),日期包含了本月头尾用于组成完整一周的日期。

itermonthdays(year, month)

返回一个迭代器:

  • 迭代器的内容与 itermonthdates() 类似,为 year 年 month 月的日期,但不受 datetime.date 范围限制。
  • 返回的日期为当月每一天的日期对应的天数。对于不在当月的日期,显示为 0。

itermonthdays2(year, month)

返回一个迭代器:

  • 迭代器的内容与 itermonthdates() 类似为 year 年 month 月的日期,但不受 datetime.date 范围的限制。
  • 迭代器中的元素为一个由日期和代表星期几的数字组成的的元组。

itermonthdays3(year, month)

返回一个迭代器:

  • 迭代器的内容与 itermonthdates() 类似为 year 年 month 月的日期,但不受 datetime.date 范围的限制。
  • 迭代器的元素为一个由年,月,日组成的元组。

itermonthdays4(year, month)

返回一个迭代器:

  • 迭代器的内容与 itermonthdates() 类似为 year 年 month 月的日期,但不受 datetime.date 范围的限制。
  • 迭代器的元素为一个由年,月,日和代表星期几的数字组成的元组。

monthdatescalendar(year, month)

返回一个表示指定年月的周列表。

monthdays2calendar(year, month)

返回一个表示指定年月的周列表。

  • 周列表由七个代表日期的数字和代表周几的数字组成的二元元组。

monthdayscalendar(year, month)

返回一个表示指定年月的周列表。

  • 周列表由七个代表日期的数字组成。

yeardatescalendar(year, width=3)

返回可以用来格式化的指定年月的数据。

  • 返回的值是一个列表,列表是月份组成的行。
  • 每一行包含了最多 width 个月(默认为3)。
  • 每个月包含了4到6周,每周包含1–7天。
  • 每一天使用 datetime.date 对象

yeardays2calendar(year, width=3)

返回可以用来模式化的指定年月的数据(与 yeardatescalendar() 类似)。

  • 周列表的元素是由表示日期的数字和表示星期几的数字组成的元组。
  • 不在这个月的日子为0。

yeardayscalendar(year, width=3)

返回可以用来模式化的指定年月的数据(与 yeardatescalendar() 类似)。

  • 周列表的元素是表示日期的数字。
  • 不在这个月的日子为0。

1.2 TextCalendar类

class calendar.TextCalendar(firstweekday=0)

用于生成纯文本日历。

TextCalendar 实例有以下方法:

formatmonth(theyear, themonth, w=0, l=0)

返回一个多行字符串来表示指定年月的日历。

  • w 为日期的宽度,但始终保持日期居中。
  • l 指定了每星期占用的行数。
  • 以上这些还依赖于构造器或者 setfirstweekday() 方法指定的周的第一天是哪一天。

prmonth(theyear, themonth, w=0, l=0)

formatmonth() 方法一样,返回一个月的日历。

formatyear(theyear, w=2, l=1, c=6, m=3)

返回一个多行字符串,这个字符串为一个 m 列日历。

  • 可选参数 w, l, 和 c 分别表示日期列数, 周的行数, 和月之间的间隔。
  • 同样,以上这些还依赖于构造器或者 setfirstweekday() 指定哪一天为一周的第一天。
  • 日历的第一年由平台依赖于使用的平台。

pryear(theyear, w=2, l=1, c=6, m=3)

formatyear() 方法一样,返回一整年的日历。

1.3 HTMLCalendar类

class calendar.HTMLCalendar(firstweekday=0)

可以使用这个类生成 HTML 日历。

HTMLCalendar 实例有以下方法:

formatmonth(theyear, themonth, withyear=True)

返回一个 HTML 表格作为指定年月的日历。

  • withyear 为真,则年份将会包含在表头,否则只显示月份。

formatyear(theyear, width=3)

返回一个 HTML 表格作为指定年份的日历。

  • width (默认为3) 用于规定每一行显示月份的数量。

formatyearpage(theyear, width=3, css=‘calendar.css’, encoding=None)

返回一个完整的 HTML 页面作为指定年份的日历。

  • width*(默认为3) 用于规定每一行显示的月份数量。
  • *css 为层叠样式表的名字。如果不使用任何层叠样式表,可以使用 None 。 encoding 为输出页面的编码 (默认为系统的默认编码)。

HTMLCalendar 有以下属性,你可以重载它们来自定义应用日历的样式。

cssclasses

一个对应星期一到星期天的 CSS class 列表。

  • 默认列表为cssclasses = [“mon”, “tue”, “wed”, “thu”, “fri”, “sat”, “sun”]
  • 可以向每天加入其它样式cssclasses = [“mon text-bold”, “tue”, “wed”, “thu”, “fri”, “sat”, “sun red”]
  • 需要注意的是,列表的长度必须为7。

cssclass_noday

工作日的 CSS 类在上个月或下个月发生。

  • 3.7 新版功能.

cssclasses_weekday_head

用于标题行中的工作日名称的 CSS 类 列表。默认值与 cssclasses 相同。

  • 3.7 新版功能.

cssclass_month_head

月份的头 CSS 类(由 formatmonthname() 使用)。默认值为 “month” 。

  • 3.7 新版功能.

cssclass_month

某个月的月历的 CSS 类(由 formatmonth() 使用)。默认值为 “month” 。

  • 3.7 新版功能.

cssclass_year

某年的年历的 CSS 类(由 formatyear() 使用)。默认值为 “year” 。

  • 3.7 新版功能.

cssclass_year_head

年历的表头 CSS 类(由 formatyear() 使用)。默认值为 “year” 。

  • 3.7 新版功能.
  • 需要注意的是,尽管上面命名的样式类都是单独出现的(如: cssclass_month cssclass_noday), 但我们可以使用空格将样式类列表中的多个元素分隔开,例如:
"text-bold text-red"

下面是一个如何自定义 HTMLCalendar 的示例

class CustomHTMLCal(calendar.HTMLCalendar):
   cssclasses = [style + " text-nowrap" for style in
                 calendar.HTMLCalendar.cssclasses]
   cssclass_month_head = "text-center month-head"
   cssclass_month = "text-center month"
   cssclass_year = "text-italic lead"

1.4 LocaleTextCalendar类

class calendar.LocaleTextCalendar(firstweekday=0, locale=None)

  • 这个子类 TextCalendar 可以在构造函数中传递一个语言环境名称,并且返回月份和星期几的名称在特定语言环境中。
  • 如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为 unicode 返回。

1.5 LocaleHTMLCalendar类

class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)

  • HTMLCalendar的这个子类可以在构造函数中被传递一个区域名称,并将返回指定区域中的月份和工作日名称。
  • 如果此区域设置包含编码,则包含月份和工作日名称的所有字符串都将作为unicode返回。
  • 这两个类的 formatweekday() 和 formatmonthname() 方法临时更改dang当前区域至给定 locale 。由于当前的区域设置是进程范围的设置,因此它们不是线程安全的。

1.6 calendar模块中的其它方法和属性

calendar 模块中的简单的文本日历方法:

calendar.setfirstweekday(weekday)

设置每一周的开始(0 表示星期一,6 表示星期天)。

  • calendar还提供了 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAYSUNDAY 几个常量方便使用。
  • 例如,设置每周的第一天为星期天:
import calendar
calendar.setfirstweekday(calendar.SUNDAY)

calendar.firstweekday()

返回当前设置的每星期的第一天的数值。

calendar.isleap(year)

如果 year 是闰年则返回 True ,否则返回 False。

calendar.leapdays(y1, y2)

返回在范围 y1 至 y2 (包含 y1 和 y2 )之间的闰年的年数,其中 y1 和 y2 是年份。

  • 此函数适用于跨越一个世纪变化的范围。

calendar.weekday(year, month, day)

返回某年( 1970 – …),某月( 1 – 12 ),某日( 1 – 31 )是星期几( 0 是星期一)。

calendar.weekheader(n)

返回一个包含星期几的缩写名的头。

  • n 指定星期几缩写的字符宽度。

calendar.monthrange(year, month)

返回指定 年份 的指定 月份 的第一天是星期几和这个月的天数。

calendar.monthcalendar(year, month)

返回表示一个月的日历的矩阵。

  • 每一行代表一周;此月份外的日子由零表示。
  • 每周从周一开始,除非使用 setfirstweekday() 改变设置。

calendar.prmonth(theyear, themonth, w=0, l=0)

打印由 month() 返回的一个月的日历。

calendar.month(theyear, themonth, w=0, l=0)

使用 TextCalendar 类的 formatmonth() 以多行字符串形式返回月份日历。

calendar.prcal(year, w=0, l=0, c=6, m=3)

打印由 calendar() 返回的整年的日历。

calendar.calendar(year, w=2, l=1, c=6, m=3)

使用 TextCalendar 类的 formatyear() 返回整年的3列的日历以多行字符串的形式。

calendar.timegm(tuple)

一个不相关但很好用的函数,它接受一个时间元组例如 time 模块中的 gmtime() 函数的返回并返回相应的 Unix 时间戳值,假定 1970 年开始计数, POSIX 编码。

  • 实际上, time.gmtime() 和 timegm() 是彼此相反的。

calendar 模块包含以下数据属性:

calendar.day_name

在当前语言环境下表示星期几的数组。

calendar.day_abbr

在当前语言环境下表示星期几缩写的数组。

calendar.month_name

在当前语言环境下表示一年中月份的数组。

  • 这遵循一月的月号为 1 的通常惯例,所以它的长度为 13 且 month_name[0] 是空字符串。

calendar.month_abbr

在当前语言环境下表示月份简写的数组。

  • 这遵循一月的月号为 1 的通常惯例,所以它的长度为 13 且 month_abbr[0] 是空字符串。

2.日期模块datetime

>回目录

  • 待更新

3.时间模块time

>回目录

  • 待更新




附:


- 内 容 索 引 -(点击超链接定向到相应位置)

>点击返回顶部

1 日历模块calendar

1.1 Calendar类

项目 类型 说明
iterweekdays() 方法 返回迭代器,内容为一周的数字
itermonthdates(year, month) 方法 返回迭代器,内容为 year 年 month 月(1-12)的日期
itermonthdays(year, month) 方法 与itermonthdays()类似
itermonthdays2(year, month) 方法 与itermonthdays()类似
itermonthdays3(year, month) 方法 与itermonthdays()类似
itermonthdays4(year, month) 方法 与itermonthdays()类似
monthdatescalendar(year, month) 方法 返回一个表示指定年月的周列表
monthdays2calendar(year, month) 方法 返回一个表示指定年月的周列表
yeardayscalendar(year, width=3) 方法 与 yeardatescalendar() 类似

1.2 TextCalendar类

项目 类型 说明
formatmonth(theyear, themonth, w=0, l=0) 方法 返回指定年月的日历
prmonth(theyear, themonth, w=0, l=0) 方法 返回一个月的日历
formatyear(theyear, w=2, l=1, c=6, m=3) 方法 返回一个多行字符串,这个字符串为一个 m 列日历
pryear(theyear, w=2, l=1, c=6, m=3) 方法 返回一整年的日历

1.3 HTMLCalendar类

项目 类型 说明
formatmonth(theyear, themonth, withyear=True) 方法 返回一个多行字符串来表示指定年月的日历
formatyear(theyear, width=3) 方法 返回一个多行字符串,这个字符串为一个 m 列日历
formatyearpage(theyear, width=3, css=‘calendar.css’, encoding=None) 方法 返回一个完整的 HTML 页面作为指定年份的日历
cssclasses 属性 一个对应星期一到星期天的 CSS class 列表
cssclass_noday 属性 工作日的 CSS 类在上个月或下个月发生
cssclasses_weekday_head 属性 用于标题行中的工作日名称的 CSS 类 列表
cssclass_month_head 属性 月份的头 CSS 类
cssclass_month 属性 某个月的月历的 CSS 类
cssclass_year 属性 某年的年历的 CSS 类
cssclass_year_head 属性 年历的表头 CSS 类

1.4 LocaleTextCalendar类

1.5 LocaleHTMLCalendar类

1.6 calendar模块函数和属性

项目 类型 说明
calendar.setfirstweekday(weekday) 函数 设置每一周的开始。
calendar.firstweekday() 函数 返回当前设置的每星期的第一天的数值。
calendar.isleap(year) 函数 判断是否是闰年。
calendar.leapdays(y1, y2) 函数 返回某两年间闰年的年数。
calendar.weekday(year, month, day) 函数 返回某个日期是星期几。
calendar.weekheader(n) 函数 返回一个包含星期几的缩写名的头。
calendar.monthrange(year, month) 函数 返回指定月份的第一天是星期几与该月的天数。
calendar.monthcalendar(year, month) 函数 返回表示一个月的日历的矩阵。
calendar.prmonth(theyear, themonth, w=0, l=0) 函数 打印由 month() 返回的一个月的日历。
calendar.month(theyear, themonth, w=0, l=0) 函数 以多行字符串形式返回月份日历。
calendar.prcal(year, w=0, l=0, c=6, m=3) 函数 打印由 calendar() 返回的整年的日历。
calendar.calendar(year, w=2, l=1, c=6, m=3) 函数 返回整年的3列的日历以多行字符串的形式
calendar.timegm(tuple) 函数 接受一个时间元组例如 time 模块中的 gmtime() 函数的返回并返回相应的 Unix 时间戳值

2 日期模块datetime

3 时间模块time


目录
相关文章
|
10天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
10天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
10天前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
9天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
9天前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
9天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
9天前
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
|
12天前
|
数据采集 搜索推荐 C语言
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化和调试技巧,涵盖使用内置函数、列表推导式、生成器、`cProfile`、`numpy`等优化手段,以及`print`、`assert`、`pdb`和`logging`等调试方法。通过实战项目如优化排序算法和日志记录的Web爬虫,帮助你编写高效稳定的Python程序。
|
12天前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
12天前
|
Python
Python 高级编程与实战:深入理解面向对象与并发编程
本文深入探讨Python的高级特性,涵盖面向对象编程(继承、多态、特殊方法、类与实例属性)、异常处理(try-except、finally)和并发编程(多线程、多进程、异步编程)。通过实战项目如聊天服务器和异步文件下载器,帮助读者掌握这些技术,编写更复杂高效的Python程序。

热门文章

最新文章