You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:06:15