2022年 11月 5日

学习Python(八):时间模块

1 time 模块

time 模块提供了很多与时间相关的类和函数,下面我们介绍一些常用的。

1.1 struct_time 类

time 模块的 struct_time 类代表一个时间对象,可以通过索引和属性名访问值。 对应关系如下所示:(tm_sec 范围为 0 ~ 61,值 60 表示在闰秒的时间戳中有效,并且由于历史原因支持值 61)

索引 属性
0 tm_year(年) 2022
1 tm_mon(月) 1 ~ 12
2 tm_mday(日) 1 ~ 31
3 tm_hour(时) 0 ~ 23
4 tm_min(分) 0 ~ 59
5 tm_sec(秒) 0 ~ 61
6 tm_wday(周) 0 ~ 6
7 tm_yday(一年内第几天) 1 ~ 366
8 tm_isdst(夏时令) -1、0、1

localtime() 表示当前时间,返回类型为 struct_time 对象,示例如下所示:

  1. import time
  2. t = time.localtime()
  3. print(t)
  4. print(t.tm_year)
  5. print(t[0])

输出结果:

  1. time.struct_time(tm_year=2022, tm_mon=4, tm_mday=26, tm_hour=21, tm_min=49, tm_sec=54, tm_wday=6, tm_yday=335, tm_isdst=0)
  2. 2022
  3. 2022

2 datetime 模块

datatime 模块重新封装了 time 模块,提供了更多接口,变得更加直观和易于调用。

2.1 date 类

date 类表示一个由年、月、日组成的日期,格式为:datetime.date(year, month, day)。

  • year 范围为:[1, 9999]

  • month 范围为:[1, 12]

  • day 范围为 [1, 给定年月对应的天数]。

类方法和属性如下所示

方法(属性) 说明
today() 返回当地的当前日期
fromtimestamp(timestamp) 根据给定的时间戮,返回本地日期
min date 所能表示的最小日期
max date 所能表示的最大日期

使用示例如下所示:

  1. import datetime
  2. import time
  3. print(datetime.date.today())
  4. print(datetime.date.fromtimestamp(time.time()))
  5. print(datetime.date.min)
  6. print(datetime.date.max)

3 calendar 模块

calendar 模块提供了很多可以处理日历的函数。

3.1 常用函数

方法 说明
setfirstweekday(weekday) 设置每一周的开始(0 表示星期一,6 表示星期天)
firstweekday() 返回当前设置的每星期的第一天的数值
isleap(year) 如果 year 是闰年则返回 True ,否则返回 False
leapdays(y1, y2) 返回 y1 至 y2 (包含 y1 和 y2 )之间的闰年的数量
weekday(year, month, day) 返回指定日期的星期值
monthrange(year, month) 返回指定年份的指定月份第一天是星期几和这个月的天数
month(theyear, themonth, w=0, l=0) 返回月份日历
prcal(year, w=0, l=0, c=6, m=3) 返回年份日历

3.2 Calendar 类

Calendar 对象提供了一些日历数据格式化的方法,实例方法如下所示:

方法 说明
iterweekdays() 返回一个迭代器,迭代器的内容为一星期的数字
itermonthdates(year, month) 返回一个迭代器,迭代器的内容为年 、月的日期

3.3 TextCalendar 类

TextCalendar 为 Calendar子类,用来生成纯文本日历。实例方法如下所示:

方法 说明
formatmonth(theyear, themonth, w=0, l=0) 返回一个多行字符串来表示指定年、月的日历
formatyear(theyear, w=2, l=1, c=6, m=3) 返回一个 m 列日历,可选参数 w, l, 和 c 分别表示日期列数, 周的行数, 和月之间的间隔

3.4 HTMLCalendar类

HTMLCalendar 类可以生成 HTML 日历。实例方法如下所示:

方法 说明
formatmonth(theyear, themonth, withyear=True) 返回一个 HTML 表格作为指定年、月的日历
formatyear(theyear, width=3) 返回一个 HTML 表格作为指定年份的日历
formatyearpage(theyear, width=3, css=‘calendar.css’, encoding=None) 返回一个完整的 HTML 页面作为指定年份的日历