time 模块超详细使用文档

前言

python中关于时间和日期的处理通常会使用time模块datatime模块,很多小伙伴对这两个模块的使用并不太熟悉,今天和大家一起聊聊使用time模块来处理常见的一些时间数据的格式转换。

一、time模块中的时间格式

在time模块中有一个内置的struct_time类,用来表示时间。struct_time的初始化参数为一个包含时间8要素的元组,一个时间对象的参数为一个包含八个值的元组。

案例:

from time import struct_time
# 包含时间信息的元素
time_info = (2022, 6, 29, 19, 50, 22, 3, 180, 0)
# 初始化为一个struct_time 时间对象
t = struct_time(time_info)
print(t)
  • 输出结果:
>>> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=29, tm_hour=19, tm_min=50, tm_sec=22, tm_wday=3, tm_yday=180, tm_isdst=0)

说明:包含时间信息元组中的8个值,分别代表(年,月、日、时、分、秒、星期、一年中的第N天,是否为夏令时 )

属性 说明 值的范围
tm_year (例如,1993)
tm_mon range [1, 12]
tm_mday range [1, 31]
tm_hour range [0, 23]
tm_min range [0, 59]
tm_sec range [0, 61]
tm_wday 星期几 range [0, 6] ,周一为 0
tm_yday 一年中的那一天 range [1, 366]
tm_isdst 是否为夏令时 0, 1 或 -1;如下所示

二、时间戳和格式转换

1、获取时间戳

time模块提供了一个叫做time的函数,可以用来获取时间戳

import time
# 获取时间戳
s = time.time()
print(s)

输出结果:

>>> 1656494969.7489467

2、时间戳转换为struct_time格式

方式一:gmtime方法

time模块中提供了一个叫做gmtime函数,可以将时间戳转换为 UTC(世界标准时间) 的struct_time格式时间

import time
# 时间戳
s = 1656374969
# 输出结果
res = time.gmtime(s)
print(res)

输出结果:

>>> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=28, tm_hour=0, tm_min=9, tm_sec=29, tm_wday=1, tm_yday=179, tm_isdst=0)
方式二:localtime方法

time模块中提供了一个叫做localtime的函数,可以将时间戳 转换为 本地时间 的struct_time格式时间

import time
# 时间戳
s = 1656374969
# 输出结果
res = time.localtime(s)
print(res)

输出结果

>>> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=28, tm_hour=8, tm_min=9, tm_sec=29, tm_wday=1, tm_yday=179, tm_isdst=0)
说明:调用gmtime方法和localtime方法不传时间戳,默认是根据当前时间的时间戳 返回的struct_time格式时间

3、时间戳转换为字符串形式

time模块中提供了一个ctime函数,可以将时间戳转换为字符串格式的日期

import time
# 时间戳
s = 1656374969
# 输出结果
res = time.ctime(s)
print(res)

输出结果:

>>> Tue Jun 28 08:09:29 2022

4、将struct_time格式时间转换为字符串形式

time模块中提供了一个ctime函数,可以将struct_time格式时间转换为字符串格式形式

import time

# 初始化为一个struct_time 时间对象
t = time.struct_time((2022, 6, 29, 9, 5, 22, 3, 180, 0))
# 转换为字符串形式
res = time.asctime(t)
print(res)

输入结果:

>>> Thu Jun 29 09:05:22 2022

5、将struct_time格式时间转换为时间戳

time模块中提供了一个mktime函数,可以将struct_time格式时间 转换为时间戳

import time

# 初始化为一个struct_time 时间对象
t = time.struct_time((2022, 6, 29, 9, 5, 22, 3, 180, 0))
# 转换为时间戳
res = time.mktime(t)
print(res)

输出结果:

>>> 1656500722.0

6、将struct_time时间格式化为指定形式的字符串

time模块中提供了一个strftime函数,可以将struct_time格式时间格式化为指定形式的字符串

import time

# 初始化为一个struct_time 时间对象
t = time.struct_time((2022, 6, 29, 9, 5, 22, 3, 180, 0))
# 格式化为`年-月-日`格式
res = time.strftime('%Y-%H-%M',t)
print(res)
# 格式化为`年-月-日 时:分:秒`格式
res = time.strftime('%Y-%H-%M %H:%M:%S',t)
print(res)

结果输出:

>>> 2022-09-05
>>> 2022-09-05 09:05:22

格式化显示可用变量:

变量 含义
%a 本地化的缩写星期中每日的名称。
%A 本地化的星期中每日的完整名称。
%b 本地化的月缩写名称。
%B 本地化的月完整名称。
%c 本地化的适当日期和时间表示。
%d 十进制数 [01,31] 表示的月中日。
%H 十进制数 [00,23] 表示的小时(24小时制)。
%I 十进制数 [01,12] 表示的小时(12小时制)。
%j 十进制数 [001,366] 表示的年中日。
%m 十进制数 [01,12] 表示的月。
%M 十进制数 [00,59] 表示的分钟。
%p 本地化的 AM 或 PM 。
%S 十进制数 [00,61] 表示的秒。
%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。
%w 十进制数 [0(星期日),6] 表示的周中日。
%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。
%x 本地化的适当日期表示。
%X 本地化的适当时间表示。
%y 十进制数 [00,99] 表示的没有世纪的年份。
%Y 十进制数表示的带世纪的年份。
%z 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。
%Z 时区名称(如果不存在时区,则不包含字符)。
%% 字面的'%' 字符。

7、将自定义字符串时间解析为 struct_time格式

将time模块中提供了一个strptime函数,字符串格式的日期 转换为struct_time格式

import time

res = time.strptime('2011-09-08', '%Y-%m-%d')
print(res)

res1 = time.strptime('2022-09-05 09:05:22', '%Y-%m-%d %H:%M:%S')
print(res1)

输出结果:

time.struct_time(tm_year=2011, tm_mon=9, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=251, tm_isdst=-1)
time.struct_time(tm_year=2022, tm_mon=9, tm_mday=5, tm_hour=9, tm_min=5, tm_sec=22, tm_wday=0, tm_yday=248, tm_isdst=-1)
1 操作
nmb_musen 在 2022-06-30 14:12:51 更新了该帖
回帖
请输入回帖内容 ...