- 1.time模块
- 1.1struct_time类
- 1.2常用函数
- 1.3strftime()函数的使用说明
- 2.datetime模块
- 2.1date类
- 2.2time类
- 2.3datetime类
time模块提供了很多与时间相关的类和函数,下面我会介绍一些经常用到的。
1.1struct_time类time模块的struct_time类代表一个时间对象,可以通过访问索引和属性名访问数值。对应的关系如下图所示:
| 索引 | 属性 | 数值 |
|---|---|---|
| 0 | tm_year(年) | 1921 |
| 1 | tm_mon(月) | 1 - 12 |
| 2 | tm_mday(日) | 1 - 31 |
| 3 | tm_hour(小时) | 0 - 23 |
| 4 | tm_min(分) | 0 - 59 |
| 5 | tm_sec(秒) | 0 - 60 |
| 6 | tm_wday(周) | 0 - 6 |
| 7 | tm_yday(一年内的第几天) | 1 - 366 |
| 8 | tm_isdst(夏时令) | -1、0、1 |
localtime()表示当前时间,返回类型为struct_time对象,用法如下:
import time
t = time.localtime()
print(f'当前时间为{t}')
print(f'现在是{t.tm_year}年,{t.tm_mon}月{t.tm_mday}日。')
输出:
当前时间为time.struct_time(tm_year=2021, tm_mon=12, tm_mday=20, tm_hour=14, tm_min=49, tm_sec=52, tm_wday=0, tm_yday=354, tm_isdst=0) 现在是2021年,12月20日。1.2常用函数
| 函数 | 描述 |
|---|---|
| time() | 返回当前时间的时间戳 |
| gmtime(secs) | 将时间戳转换为格林威治天文时间下的struct_time,可选参数seces表示从epoch到现在的描述,默认为当前时间 |
| localtime(secs) | 与gmtime()类似,返回当地时间的struct_time |
| mktime(t) | localtime()的反函数 |
| asctime(t) | 接受一个struct_time表示的时间,返回的形式为:Mon Dec 3 09 11:53:02 202 的字符串 |
| ctime(secs) | ctime(secs)相当于asctime(localtime(secs)) |
1.3strftime()函数的使用说明epoch: 1970-01-01 00:00:00 UTC
| 符号 | 描述 |
|---|---|
| %a | 本地化的缩写型其中每日的名称 |
| %b | 本地化的月的缩写名称 |
| %c | 本地化的日期和时间表示 |
| %d | 十进制表示的月中的日 |
| %H | 十进制表示的小时(24小时制) |
| %l | 十进制表示的小时(12小时制) |
| %m | 十进制表示的月 |
| %M | 十进制表示的分钟 |
| %S | 十进制表示的秒 |
| %Y | 十进制表示的带世纪的年份 |
| %Z | 时区名称 |
用法如下:
import time
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
输出:
2021-12-20 15:02:392.datetime模块
datetime模块重新封装了time模块,提供了更多的接口,变得更加直观和易于调用。
2.1date类date类表示一个由年、月、日组成的日期,格式为datetime.date(year, month, day)。
方法如下:
| 方法 | 说明 |
|---|---|
| today() | 返回当地的当前时间 |
| min | date所能表示的最小日期 |
| max | date所能表示的最大日期 |
用法如下:
import datetime print(datetime.date.today()) print(datetime.date.min) print(datetime.date.max)
输出:
2021-12-20 0001-01-01 9999-12-31
一些方法和属性如下所示:
| 方法 | 描述 |
|---|---|
| replace(year,month,day) | 生成一个新的日期对象,用参数指定的年、月、日代替原有对象中的属性 |
| timetuple() | 返回日期对应的struct_time对象 |
| weekday() | 返回一个整数代表星期几(初始为0) |
| isoweekday() | 返回一个整数代表星期几(初始为1) |
| isoformat() | 返回格式如YYYY-MM-DD的字符串 |
| year | 年 |
| month | 月 |
| day | 日 |
用法如下:
import datetime t = datetime.date.today() print(t.weekday()) print(t.year) print(t.timetuple())
输出:
0 2021 time.struct_time(tm_year=2021, tm_mon=12, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=354, tm_isdst=-1)2.2time类
time 类表示由时、分、秒、微秒组成的时间,格式为:time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)。
方法和属性如下图所示:
| 方法 | 描述 |
|---|---|
| isoformat() | 返回 HH:MM:SS 格式的字符串 |
| replace(hour, minute, second, microsecond, tzinfo, * fold=0) | 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性 |
| strftime(format) | 返回自定义格式的字符串 |
| hour | 时 |
| minute | 分 |
| second | 秒 |
| microsecond | 微秒 |
| tzinfo | 时区 |
用法如下:
import datetime t = datetime.time() print(t.hour) print(t.tzinfo) print(t.isoformat())
输出:
0 None 00:00:002.3datetime类
datetime 包括了 date 与 time 的所有信息,格式为:datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0),参数范围值参考 date 类与 time 类。
方法和属性如下图所示:
| 方法 | 描述 |
|---|---|
| today() | 返回当地的当前时间 |
| mow(tz=None) | 类似于today,可选择时区 |
| utcnow() | 返回当前UTC时间 |
| combine(date,time) | 根据date和time返回对应时间 |
用法如下:
import datetime print(datetime.datetime.hour) print(datetime.datetime.now()) print(datetime.datetime.today())
输出:
2021-12-20 15:18:42.298486 2021-12-20 15:18:42.298486



