Python time 模块简述
time 简介
time 是 Python 处理时间的标准库,其提供了三种时间表达形式
- 时间戳
- 结构化时间对象
- 格式化时间字符串
时间戳
获取当前时间戳,计算内部时间,以浮点数形式返回
import time print(time.time()) #1685243267.1221318
结构化时间对象
time.gmtime()
将纪元以来以秒为为单位表示的时间转换为struct_time标志始终为0的UTC时间,
print(type(time.gmtime())) #<class 'time.struct_time'> print(time.gmtime()) #time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=3, tm_min=16, tm_sec=35, tm_wday=6, tm_yday=148, tm_isdst=0)
time.gmtime()的返回值可以使用索引或者变量名获取内部数据
print(time.gmtime()[0]) #2023 print(time.gmtime().tm_year)#2023 print(time.gmtime()[1])#5 print(time.gmtime().tm_mon)#5 print(time.gmtime()[2])#28 print(time.gmtime().tm_mday)#28 print(f"今天是{time.gmtime()[0]}-{time.gmtime()[1]}-{time.gmtime()[2]}")#今天是2023-5-28 print(f"今天是{time.gmtime()[0]}的第{time.gmtime()[7]}天了、" f"还有{365-time.gmtime()[7]}天就元旦了")#今天是2023的第148天了、还有217天就元旦了
time.localtime()
当地时间
print(time.localtime()) #time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=11, tm_min=28, tm_sec=31, tm_wday=6, tm_yday=148, tm_isdst=0)
其它用法和gmtime相同
print(time.localtime()[0]) #2023 print(time.localtime().tm_year)#2023 print(time.localtime()[1])#5 print(time.localtime().tm_mon)#5 print(time.localtime()[2])#28 print(time.localtime().tm_mday)#28 print(f"今天是{time.localtime()[0]}-{time.localtime()[1]}-{time.localtime()[2]}")#今天是2023-5-28 print(f"今天是{time.localtime()[0]}的第{time.localtime()[7]}天了、" f"还有{365-time.localtime()[7]}天就元旦了")#今天是2023的第148天了、还有217天就元旦了 '''2023 2023 5 5 28 28 今天是2023-5-28 今天是2023的第148天了、还有217天就元旦了 '''
格式化字符串
time.ctime()
获取当前时间,返回格式化后的字符串
print(time.ctime()) #Sun May 28 11:35:55 2023
time.asctime([t]) :接收时间元组。通过函数gmtime() 或 localtime() 返回的时间信息,返回一个可读的字符串,
print(time.asctime(time.localtime())) #Sun May 28 11:38:24 2023 print(time.asctime(time.gmtime())) #Sun May 28 03:38:24 2023
三种时间形式的互相转换
时间戳转结构化对象
time.gmtime(时间戳)
time.localtime(时间戳)
print(time.localtime()) print(time.localtime(time.time() - 3600)) #UTC 时间 print(time.gmtime()) print(time.gmtime(time.time() - 3600)) time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=11, tm_min=45, tm_sec=10, tm_wday=6, tm_yday=148, tm_isdst=0) time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=10, tm_min=45, tm_sec=10, tm_wday=6, tm_yday=148, tm_isdst=0) time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=3, tm_min=45, tm_sec=10, tm_wday=6, tm_yday=148, tm_isdst=0) time.struct_time(tm_year=2023, tm_mon=5, tm_mday=28, tm_hour=2, tm_min=45, tm_sec=10, tm_wday=6, tm_yday=148, tm_isdst=0)
结构化对象转时间戳
time.mktime(结构化时间对象)
print(time.time()) print(time.mktime(time.localtime())) 1685245781.0376158 1685245781.0
结构化对象转格式化时间字符串
time.strftime(格式化时间对象,time.localtime()/time.gmtime())
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) print(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())) 2023-05-28 11:52:34 2023-05-28 03:52:34
其它函数案例
time.sleep(s)
线程休眠s秒
time1 = time.time() time.sleep(5)#暂停5秒后继续 time2 = time.time() print(f"这段代码执行耗时 {round(time2-time1,2)}秒") #这段代码执行耗时 5.0秒
模拟爬虫点击
import time import random sleep_time = random.uniform(1, 5) time.sleep(sleep_time)