一.sleep休眠
[root@rhel8 day04]# vim demo01_time.py
import time
def banzhuan():print("搬砖")time.sleep(3.5) #让程序休眠3.5秒print("结束")banzhuan()[root@rhel8 day04]# python3 demo01_time.py
搬砖
结束
运行时,会发现程序中间暂停了3.5秒
二.time.time时间戳
从1970年1月1日00:00:00开始,到现在的秒数
[root@rhel8 day04]# vim demo01_time.py
print(time.time())
[root@rhel8 day04]# python3 demo01_time.py
1702115925.7090266
可以利用上面自定义的函数+时间戳,验证sleep的效果,用程序执行后的时间戳减去程序执行前的时间戳,查看得到的秒数
[root@rhel8 day04]# vim demo01_time.py
import time
def banzhuan():print("搬砖")time.sleep(3.5) #让程序休眠3.5秒print("结束")time1 = time.time()
banzhuan()
time2 = time.time()
print("spend:",time2-time1)
[root@rhel8 day04]# python3 demo01_time.py
搬砖
结束
spend: 3.5039751529693604
结果显示,中间暂停了3.5秒。
三.结构化时间
将时间戳转换为UTC时区的结构化时间
[root@rhel8 day04]# vim demo01_time.py
import timeprint(time.gmtime(time.time()))
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=3, tm_sec=49, tm_wday=5, tm_yday=343, tm_isdst=0)
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=3, tm_sec=49, tm_wday=5, tm_yday=343, tm_isdst=0)
可以得到九个字段,每个字段分别代表:
tm_year | 代表年份 |
tm_mon | 代表月份 |
tm_mday | 代表当月的第几天 |
tm_hour | UTC时区的时间,换算成北京时间需要加八个小时 |
tm_min | 小时的第几分钟 |
tm_sec | 分钟的第几秒 |
tm_wday | 一周的第几天,按照0,1,2,3,4,5,6计算,今天周六,就显示5 |
tm_yday | 一年的第多少天 |
tm_isdst | 是否为夏令时 |
可以用索引方式取值
import timedata = time.gmtime(time.time())
print(data)
print(data[0])
print(data.tm_year,data.tm_hour,data.tm_min,data.tm_sec)
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=14, tm_sec=46, tm_wday=5, tm_yday=343, tm_isdst=0)
2023
2023 10 14 46
四.localtime()
time.localtime()表示当前时区的结构化时间
[root@rhel8 day04]# vim demo01_time.py
import timedata = time.localtime()
print(data)
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=18, tm_min=24, tm_sec=14, tm_wday=5, tm_yday=343, tm_isdst=0)
五.结构化时间转换为时间戳
[root@rhel8 day04]# vim demo01_time.py
import timedata = time.mktime(time.localtime())
print(data)
[root@rhel8 day04]# python3 demo01_time.py
1702117553.0
六.结构化时间--->时间字符串
[root@rhel8 day04]# vim demo01_time.py
import time
#%Y 年 %m 月 %d 日 %H 小时 %M 分钟 %S 秒
data = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print(data)
[root@rhel8 day04]# python3 demo01_time.py
2023-12-09 19:19:04
七.时间字符串--->结构化时间
[root@rhel8 day04]# vim demo01_time.py
import time
#%Y 年 %m 月 %d 日 %H 小时 %M 分钟 %S 秒
data = time.strptime("2029-11-01 19:56:47","%Y-%m-%d %H:%M:%S")
print(data)[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2029, tm_mon=11, tm_mday=1, tm_hour=19, tm_min=56, tm_sec=47, tm_wday=3, tm_yday=305, tm_isdst=-1)
八.总结
练习
有一个日志文件内容如下,要求取出9点--12点的内容
[root@rhel8 day04]# cat /opt/myweb.log
2030-01-02 08:01:43 aaaaaaaaaaaaaaaa
2030-01-02 08:34:23 bbbbbbbbbbbbbbbb
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee
2030-01-02 12:02:28 ffffffffffffffffffff
使用readlines函数方式如下
[root@rhel8 day04]# vim test02_time.py
import time
t9 = time.strptime("2030-01-02 09:00:00","%Y-%m-%d %H:%M:%S")
t12 = time.strptime("2030-01-02 12:00:00","%Y-%m-%d %H:%M:%S")with open("/opt/myweb.log",mode="r") as f:for line in f.readlines():t = time.strptime(line[:19],"%Y-%m-%d %H:%M:%S")if t9 <= t <= t12:print(line,end="")
[root@rhel8 day04]# python3 test02_time.py
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee
使用readlines函数方式如下
[root@rhel8 day04]# vim test02_time.py
import time
t9 = time.strptime("2030-01-02 09:00:00","%Y-%m-%d %H:%M:%S")
t12 = time.strptime("2030-01-02 12:00:00","%Y-%m-%d %H:%M:%S")with open("/opt/myweb.log",mode="r") as f:while True:data = f.readline()if len(data) == 0:breakelse:t = time.strptime(data[:19],"%Y-%m-%d %H:%M:%S")if t9 <= t <= t12:print(data,end="")
[root@rhel8 day04]# python3 test02_time.py
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee