Django中生成含分钟的多个随机时间问题求助
生成带分钟的随机时间解决方案
要生成类似9:30、1:45这类带分钟的随机时间,你可以通过随机生成小时和分钟的组合,再格式化为目标字符串来实现。以下是两种适配不同需求的实现方式:
方式一:生成不重复的随机时间(匹配原代码的sample逻辑)
如果需要确保生成的时间互不重复,可以先构造所有可能的小时+分钟组合,再从中随机采样:
import random no_of_route = int(request.POST.get('no_of_route')) # 校验请求数量(一天最多1440个不同时间点) if no_of_route > 1440: raise ValueError("请求的路线数量超过一天内的时间点总数(1440个)") # 生成所有可能的小时+分钟元组组合 all_time_combinations = [(hour, minute) for hour in range(24) for minute in range(60)] # 随机采样指定数量的不重复组合 selected_times = random.sample(all_time_combinations, no_of_route) # 格式化为目标字符串(支持12小时制/24小时制) formatted_times = [] for hour, minute in selected_times: # 12小时制(如1:45、9:30) formatted_hour = hour % 12 if hour % 12 != 0 else 12 formatted_time = f"{formatted_hour}:{minute:02d}" # 如果需要24小时制(如01:45、09:30),替换为下面的代码: # formatted_time = f"{hour:02d}:{minute:02d}" formatted_times.append(formatted_time) # 最终formatted_times就是你需要的随机时间列表
方式二:允许重复的随机时间(更简单)
如果不需要严格保证时间唯一,直接循环生成随机小时和分钟即可:
import random no_of_route = int(request.POST.get('no_of_route')) formatted_times = [] for _ in range(no_of_route): hour = random.randint(0, 23) minute = random.randint(0, 59) # 12小时制格式 formatted_hour = hour % 12 if hour % 12 != 0 else 12 formatted_time = f"{formatted_hour}:{minute:02d}" # 24小时制格式替换为: # formatted_time = f"{hour:02d}:{minute:02d}" formatted_times.append(formatted_time)
关键说明
minute:02d确保分钟数始终是两位数字(如30不会变成3);- 12小时制的处理逻辑会把0点转为12,13点转为1,符合日常习惯;
- 若使用24小时制,直接格式化小时为两位数字即可。
内容的提问来源于stack exchange,提问作者tina
相关产品推荐
相关产品推荐

