首页 > 解决方案 > 生成间隔为 5 分钟的随机时间

问题描述

我正在尝试获得如下所示的输出:

12:15
07:55
02:20
04:35

我设法得到以下输出:

2020-07-03 03:53:32
2020-07-20 08:01:15
2020-07-29 10:04:11
2020-07-07 07:17:24
2020-07-20 12:13:32

通过使用此代码:

import datetime
import time
import random

MINTIME = datetime.datetime(2020,7,1,0,0,0)
MAXTIME = datetime.datetime(2020,7,31,0,0,0)

mintime_ts = int(time.mktime(MINTIME.timetuple())) #convert date into int
maxtime_ts = int(time.mktime(MAXTIME.timetuple())) #convert date into int

for RECORD in range(100):
    random_ts = random.randint(mintime_ts, maxtime_ts)
    RANDOMTIME = datetime.datetime.fromtimestamp(random_ts)
    print(RANDOMTIME)

所以,基本上我有两个问题。第一个是我只想以 (hh:mm) 的格式获取时间。第二个是我希望该步骤为 5 分钟(例如 14:50 或 04:35 .. 等)。

谢谢

标签: pythondatetimerandom

解决方案


您可以确定最短和最长时间之间的 5 分钟时段数,并随机选择其中一个时段。

对于输出,使用该strftime方法获取您想要的任何格式:

import datetime
import time
import random

MINTIME = datetime.datetime(2020,7,1,0,0,0)
MAXTIME = datetime.datetime(2020,7,31,0,0,0)

mintime_ts = int(time.mktime(MINTIME.timetuple())) #convert date into int
maxtime_ts = int(time.mktime(MAXTIME.timetuple())) #convert date into int

nb_slots = (maxtime_ts - mintime_ts)//(5*60)  # number of 5 minutes slots
for RECORD in range(10):
    random_slot = random.randint(0, nb_slots)
    random_ts = mintime_ts + 5*60 * random_slot
    RANDOMTIME = datetime.datetime.fromtimestamp(random_ts)
    print(datetime.datetime.strftime(RANDOMTIME, '%H:%M'))
    

输出:

11:20
15:20
11:25
02:10
13:30
08:30
00:45
06:10
17:05
01:00

推荐阅读