Python中时间之间的计算小demo
可以根据自己的场景,进行相应的修改
import time
import datetime
import socket
import redis
r = redis.Redis(host='127.0.0.1', port=6379)
# 获取本机ip
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
s.close()
return ip
except Exception as e:
# 没有网络的时候是无法获取到的
return '连接超时'
def func():
# 调用获取ip函数
ip = str(get_host_ip())
# 先获取该ip是否存在redis中
is_r = float(r.hget(ip, 'begin_time').decode('utf-8'))
# 未存
if not is_r:
# 将ip作为redis中的key存进去
r.hset(ip, 'begin_time', time.time())
return
# 已存
else:
# 一个时间转换str类型的字符串格式
str_time = "%Y-%m-%d %H:%M:%S"
# 设置时间,单位可以在下面的timedelta中可以控制
limit_time = 10
# 将redis中获取的begin_time转换成localtime格式-->将localtime格式转换成字符串格式-->
# 将字符串转化成datetime类型时间格式
begin_time = datetime.datetime.strptime(time.strftime(str_time, time.localtime(is_r)), str_time)
# 将datetime类型的begin_time与设置的小时时限相加,得出截止答题时间-->并转换成字符串-->
# 将字符串转换成time时间格式-->将time转换成浮点型
end_time = time.mktime(
time.strptime(str(begin_time + datetime.timedelta(days=int(limit_time))), str_time)
)
# 使用计算后的时限时间,与当前时间做计算
surplus_time = int(end_time - time.time())
# 返回结果
return surplus_time
def func1():
surplus_time = func()
print(surplus_time)
if surplus_time:
print('继续答题')
else:
print('答卷未完成')
if __name__ == '__main__':
func1()
欢迎留言,对代码进行优化