前言
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)
欢迎来到testingpai.com!
注册 关于