引言:给大家介绍一下python中两个时间模块的常用方法;顺便也自己做一下笔记;
一般时间分为‘时间戳’与‘字符串’两种格式;时间戳是数字类型,如:616651.65165
而‘时间字符串’一般为'年-月-日 时:分:秒'这种格式
首先是time模块(import time)
-
time.sleep(n) # 当程序执行到这,沉睡n秒再继续执行
-
timr.time() # 返回从1970开始的计算到现在的时间(单位秒)的时间戳
-
time.localtime(时间戳) # 把时间戳转化为struct_time对象(时间戳为数字类型)
-
time.mktime(struct_time) #可传入一个struct_time对象,转化成时间戳
-
time.strptime('2017-5-6 22:15:33',"%Y-%m-%d %H:%M:%S") #把时间字符串转成struct_time 对象;(返回struct_time对象)
到datetime模块(import datetime):
-
datetime.datetime(年,月,日[,时,分,秒,微秒]) # 返回datetime对象(中括号代表可选)
t = datetime.datetime(2017, 12, 21, 19, 35, 59, 129648)
print(t,type(t))
>>>2017-12-21 19:35:59.129648 <class 'datetime.datetime'>
2. datetime.datetime.strptime(str_time,"%Y-%m-%d %H:%M:%S") # 把字符串转成时间对象
datetime.datetime.strptime('2017-5-6 22:15:33',"%Y-%m-%d %H:%M:%S")
>>>2017-05-06 22:15:33 #Y-m-d代表年月日;H:M:S代表时分秒
3. datetime.date(年,月,日) #返回date对象;精确到日;如:
datetime.date(2017,5,12)
>>>2017-05-12
来道题练习一下;我们拿到一个‘字符串类型的时间’和对应一个值,要对比一下当前时间,如果当前时间比我们拿到的时间大于180秒(超过180s),那我们时间对应的值就不能用了(相当于验证码180s过期)
def func():
while True: # 做个循环一直拿
str_time = '2022-9-5 22:35:40' # 把这个当做我们拿到的时间(相当于我们做一个爬虫去拿数据)
# 所以str_time 是一个变量
t1 = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
t1 = time.mktime(t1)
if time.time() - t1 <180:
print('没过期') # 当拿到没过期的值,就退出循环
break
else:
print('过期了') # 这个打印为了看效果