Python:随机生成时间并进行相应的处理(拓展实现倒计时)。
一、背景
日常工作中,我们经常会构造一些数据,比如模拟性能测试数据,稳定测试数据等,这样的时间数据有可能是不连续不规则的,也有可能是连续规则的变化。本篇文章将逐一进行介绍。(拓展:设计一个倒计时装置)。
二、应用场景
1、随机生成时间(字符串拼接的方式)
(1)代码实现
import random
for i in range(10):
# 函数返回参数1和参数2之间的任意整数, 闭区间
a=random.randint(0,60)
# str(a).zfill(2)代表不足两位的字符向左补0
print('00:00:'+ str(a).zfill(2))
(2)运行结果
D:\pythonProject\venv\Scripts\python.exe D:\pythonProject\CSDN_Demo\0829.py
00:00:49
00:00:14
00:00:22
00:00:37
00:00:60
00:00:51
00:00:28
00:00:11
00:00:18
00:00:55
Process finished with exit code 0
(3)代码说明
random.randint()
代表函数返回参数1和参数2之间的任意整数, 闭区间。
str.zfill(2))
代表返回字符串如果不满足两个字符则向左补充0.
2、限制时间段随机生成时间(radar库)
(1)代码实现
import radar
#创建一个空列表
list=[]
# 1.随机生成时间-并进行排序
for i in range(10):
#radar生成随机的日期/时间的第三方库
#random_time随机生成时分秒;random_date随机生成年月日;random_datetime随机生成年月日 时分秒,生成时间为14:11-20:54的随机时间点数据
a=radar.random_time('14:11:00', '20:54:00')
# 将随机生成的时间放在列表中,a的数据类型为datatime无法添加到列表,因此转为字符串形式str
list.append(str(a))
print(list)
#对生成的数据进行排序
list.sort()
print(list)
(2)运行结果
D:\pythonProject\venv\Scripts\python.exe D:\pythonProject\CSDN_Demo\0829.py
['16:27:43', '18:34:09', '18:49:02', '18:29:13', '17:29:53']
['16:27:43', '17:29:53', '18:29:13', '18:34:09', '18:49:02']
Process finished with exit code 0
(3)代码说明
radar
生成随机的日期/时间的第三方库。
random_time
随机生成时分秒;random_date
随机生成年月日;random_datetime
随机生成年月日 时分秒。
list.append(str(a))
将随机生成的时间放在列表中,a的数据类型为datatime无法添加到列表,因此转为字符串形式str。
注意:
1、如果不想要重复的数据可以直接通过:print(set(list))
进行重复数据剔除。
2、有时候生成的数据想要他按照时间的先后进行排序,因此使用list.sort()
即可实现,如上结果显示。(想要从后向前的话添加参数即可list.sort(reverse=True)
)
3、设置开始/结束时间后,中间的时间累加30s
(1)代码实现
import datetime
end_time=datetime.datetime(2023,8,30,1,12,59)
start_time = datetime.datetime(2023, 8, 30, 1, 10, 10)
#判断开始时间是否大于结束时间,若大于则中止循环累加
while start_time<end_time:
#datetime.timedelta表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔,
# 这里我初始的temp为间隔30s
temp = datetime.timedelta(seconds=30)
start_time=start_time+temp
print(start_time)
(2)运行结果
D:\pythonProject\venv\Scripts\python.exe D:\pythonProject\CSDN_Demo\0829.py
2023-08-30 01:10:40
2023-08-30 01:11:10
2023-08-30 01:11:40
2023-08-30 01:12:10
2023-08-30 01:12:40
2023-08-30 01:13:10
Process finished with exit code 0
(3)代码说明
datetime.datetime
与上面的random_time
类似:datetime.datetime
创建年月日时分秒;
datetime.date
创建年月日;datetime.time
创建时分秒。
datetime.timedelta
表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔。参数可以为seconds
、days
、hours
等等代表时间的值。
三、拓展(倒计时装置)
通过设置一个结束时间,利用python datatime的方法获取当前时间的值,然后与结束时间比较,即可实现。
(1)代码实现
import datetime
#设置倒计时停止时间datetime.datetime创建时间
end_time=datetime.datetime(2023,9,30,16,21,00)
#设置起始时间为当前时间mow()
start_time = datetime.datetime.now()
print(start_time)
#随机给一个初始值,为实现相同的时间过滤处理,在输出显示时,没有同一时间显示。
last_name=datetime.datetime(2023,8,1,17,11,00)
#开始时间小于结束时间代表,倒计时仍在继续
while start_time<end_time:
#start_time = datetime.datetime.now()函数生成的时间为2023-09-06 15:11:50.447072,带微秒数据,不需要因此去除。
#microsecond微秒
start_time = datetime.datetime.now().replace(microsecond=0)
#此时代表上一次的时间last_name与本次的时间start_time如果一致就继续执行,不需要输出显示还剩多长的时间
if start_time==last_name:
continue
else:
#计算得出目前与结束时间相差的数据
temp1 = end_time - start_time
#此时的时间为最近的时间last_name
last_name = start_time
# 将datetime.timedelta转为字符串形式,方便我们对接下来字符的提取
str1=str(temp1)
#因为数据显示以“:”分割,直接通过split(':')函数将此字符串分割成多个
list2=str1.split(':')
#获取列表数据,进行数据输出
str2='倒计时:'+list2[0]+'小时'+list2[1]+'分'+list2[2]+'秒'
str2=str2.replace(' days, ','天')
print(str2)
print("时间到了")
(2)运行结果
D:\pythonProject\venv\Scripts\python.exe D:\pythonProject\CSDN_Demo\0829.py
2023-09-06 15:19:11.970454
倒计时:24天1小时01分49秒
倒计时:24天1小时01分48秒
倒计时:24天1小时01分47秒
倒计时:24天1小时01分46秒
倒计时:24天1小时01分45秒
倒计时:24天1小时01分44秒
倒计时:24天1小时01分43秒
倒计时:24天1小时01分42秒
倒计时:24天1小时01分41秒
----------------------
时间到了
四、总结
举一反三学习的知识会更快吸收,大家有想了解的关于时间更多应用场景的可以留言,一起进行讨论学习。快来成为学习搭子😁。