python中的time模块
在python中经常使用time模块生成时间戳,时间戳是代表距离1970年1月1日00:00:00来的秒数,不计算润秒。
介绍
基本方法
方法 作用 time() 当前时间戳,返回值为浮点类型 sleep() 休眠 不同格式的时间转换的方法
原时间类型 目标时间类型 方法 备注 时间戳 结构化UTC时间 gmtime() 时间戳 结构化本地时间 localtime() 结构化UTC时间 时间戳 calendar.timegm() 结构化本地时间 时间戳 mktime() 此方法转换时,与时区无关 结构化时间 字符串 asctime() 字符串固定格式为:Sun Apr 24 10:56:40 2022 结构化时间 字符串 strftime() 字符串 结构化时间 strptime 时间戳 字符串 time.ctime() 字符串固定格式为:Sun Apr 24 10:56:40 2022 结构化时间介绍
结构化时间可以通过索引和属性名访问值,相关索引和时间如下:
索引 属性 值 0 tm_year (例如,1993) 1 tm_mon range [1, 12] 2 tm_mday range [1, 31] 3 tm_hour range [0, 23] 4 tm_min range [0, 59] 5 tm_sec range [0, 61]; 见 strftime() 介绍中的 (2) 6 tm_wday range [0, 6] ,周一为 0 7 tm_yday range [1, 366] 8 tm_isdst 是否为夏令时,取值范围0, 1 或 -1;-1代表未知 N/A tm_zone 时区名称的缩写 N/A tm_gmtoff 以秒为单位的UTC以东偏离
示例
我们首先定义一个test函数,来方便数据的打印。
import time
def test(a):
print(type(a),a)
获取当前的时间戳
a = time.time()
test(a)
<class 'float'> 1654347598.0079849
延迟一定时间后继续运行
time.sleep(1)
时间戳转化为带时区的结构化数据
b = time.localtime(a)
test(b)
b_1 = time.gmtime(a)
test(b_1)
<class 'time.struct_time'> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=4, tm_hour=20, tm_min=59, tm_sec=58, tm_wday=5, tm_yday=155, tm_isdst=0)
<class 'time.struct_time'> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=4, tm_hour=12, tm_min=59, tm_sec=58, tm_wday=5, tm_yday=155, tm_isdst=0)
将结构化时间转为时间戳,注意:该转换与时区无关
c = time.mktime(b)
test(c)
c_1 = time.mktime(b_1)
test(c_1)
<class 'float'> 1654347598.0
<class 'float'> 1654318798.0
将时间戳转为字符串
d = time.ctime(a)
test(d)
<class 'str'> Sat Jun 4 20:59:58 2022
将结构化时间转为字符串形式
d_1 = time.asctime(b)
test(d_1)
<class 'str'> Sat Jun 4 20:59:58 2022
将结构化时间转为字符串形式
e = time.strftime('%Y-%m-%d %H:%M:%S', b)
test(e)
<class 'str'> 2022-06-04 20:59:58
将字符串转为结构化的数据
f = time.strptime(e, '%Y-%m-%d %H:%M:%S')
test(f)
<class 'time.struct_time'> time.struct_time(tm_year=2022, tm_mon=6, tm_mday=4, tm_hour=20, tm_min=59, tm_sec=58, tm_wday=5, tm_yday=155, tm_isdst=-1)
获取程序运行的时间
g = time.perf_counter()
test(g)
<class 'float'> 3.252550844