近期小编在测试的过程中需要填写时间然后出来自动的时间换算,同时需要的字符串是带有转义字符的,代码如下:
import json
import time
import datetime
def repalce_time1(time1,time2,time3,time4):
str = '{\"prepareVocabularyList\":\"320,508,513\",\"finishVocabularyList\":\"320,508,513\",\"showTime\":1666195200000,\"timeList\":[{\"title\":\"初赛1\",\"startTime\":1666925460000,\"endTime\":1666924440000,\"testType\":2,\"areaId\":1,\"questionBankNum\":\"369,377,373\"},{\"title\":\"初赛1复活赛\",\"startTime\":1666925460000,\"endTime\":1666924440000,\"testType\":2,\"areaId\":2,\"questionBankNum\":\"371,379,375\"}]}'
s = str.rstrip('\\')
json_str = json.loads(s)
times = "2022-11-17 17:00:00"
print(times)
# 转为时间数组
timeArray = time.strptime(times, "%Y-%m-%d %H:%M:%S")
# 转为时间戳
timeStamp = int(time.mktime(timeArray))
time_type_2 = timeStamp*1000
#初赛1 开始时间
json_str_startTime = time_type_2
print("开始时间:{},时间戳:{}".format(times,json_str_startTime))
#初赛1 结束时间
d = datetime.timedelta(days=0,hours=0,minutes=time1,seconds=0)
times_end = datetime.datetime.strptime(times,"%Y-%m-%d %H:%M:%S")+d
times_end_array = time.strptime(times_end.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")
timeStamp_times_end = int(time.mktime(times_end_array))
json_str_endTime = timeStamp_times_end * 1000
print("结束时间:{},时间戳:{}".format(times_end,json_str_endTime))
#初赛1复活赛 开始时间
d1 = datetime.timedelta(days=0, hours=0, minutes=time2, seconds=0)
times_start_1 = datetime.datetime.strptime(times, "%Y-%m-%d %H:%M:%S") + d1
times_start_1_array = time.strptime(times_start_1.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")
timeStamp_times_start_1 = int(time.mktime(times_start_1_array))
json_str_startTime_1 = timeStamp_times_start_1 * 1000
print("复活赛开始时间:{},时间戳:{}".format(times_start_1,json_str_startTime_1))
# 初赛1复活赛 结束
d2 = datetime.timedelta(days=0, hours=0, minutes=time3, seconds=0)
times_end_1 = datetime.datetime.strptime(times, "%Y-%m-%d %H:%M:%S") + d2
times_end1_array = time.strptime(times_end_1.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")
timeStamp_times_end1 = int(time.mktime(times_end1_array))
json_str_endTime_1 = timeStamp_times_end1 * 1000
print("复活赛结束时间:{},时间戳:{}".format(times_end_1,json_str_endTime_1))
#提前10分钟
d3 = datetime.timedelta(days=0, hours=0, minutes=time4, seconds=0)
times_10 = datetime.datetime.strptime(times, "%Y-%m-%d %H:%M:%S") + d3
times_10_array = time.strptime(times_end_1.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")
timeStamp_times_10 = int(time.mktime(times_10_array))
json_str_times_10 = timeStamp_times_10 * 1000
print("设定时间提前10分钟:{},时间戳:{}".format(times_10, json_str_times_10))
json_str['timeList'][0]['startTime'] = json_str_startTime
json_str['timeList'][0]['endTime'] = json_str_endTime
json_str['timeList'][1]['startTime'] = json_str_startTime_1
json_str['timeList'][1]['endTime'] = json_str_endTime_1
short_str = json.dumps(json_str,ensure_ascii=False)
s_list = list(short_str.split('"'))
s_new = []
for i in s_list:
i = i + "\\"
s_new.append(i)
new_json_str = '"'.join(s_new).rstrip('\\')
print(new_json_str)
repalce_time1(15,20,35,-10)
运行结果:
因为我需要替换时间的字符串是带转义字符的,所以需要生成带转义字符的字符串,不需要的小伙伴就忽略这一步吧~
希望帮到大家~ 喜欢的点赞哦~❤️❤️❤️❤️❤️❤️❤️❤️❤️