3 python random time timedelta
我正在尝试生成 24 小时时间戳的随机列表。我可以使用下面的代码在设置范围之间生成一个日期和时间样本。我希望生成多个样本(例如 10 个样本)
此外,日期组件对我来说不是优先事项。如果我可以放弃它并只生成随机的 24 小时时间戳,那就太好了。
我发现的大多数线程只考虑生成随机日期。我可以找到任何与时间有关的东西。
import random
import time
from datetime import datetime
def randomDate(start, end):
frmt = '%d-%m-%Y %H:%M:%S'
stime = time.mktime(time.strptime(start, frmt))
etime = time.mktime(time.strptime(end, frmt))
ptime = stime + random.random() * (etime - stime)
dt = datetime.fromtimestamp(time.mktime(time.localtime(ptime)))
return dt
random_datetime = randomDate("20-01-2018 13:30:00", "23-01-2018 04:50:34")
print(random_datetime)
Run Code Online (Sandbox Code Playgroud)
输出:
2018-01-21 03:33:55
Run Code Online (Sandbox Code Playgroud)
datetime
库的全部意义:datetime
,timedelta
等对象的行为尽可能像数字,因此您可以对它们进行算术运算。
因此,要在一天内生成均匀分布,只需将均匀分布从 0.0 到 1.0,然后乘以一天:1
td = random.random() * datetime.timedelta(days=1)
Run Code Online (Sandbox Code Playgroud)
要在某个特定日期生成统一的随机时间,只需将其添加到当天的午夜:
dt = datetime.datetime(2018, 5, 1) + random.random() * datetime.timedelta(days=1)
Run Code Online (Sandbox Code Playgroud)
要在两个时间戳之间生成随机时间戳:
dt = random.random() * (end - start) + start
Run Code Online (Sandbox Code Playgroud)
如果你想要其中的 10 个:
[random.random() * (end - start) + start for _ in range(10)]
Run Code Online (Sandbox Code Playgroud)
这里的所有都是它的。远离time
模块中的所有其他时间格式;仅当您需要与 C 库和文件系统数据等内容兼容时才需要它们。只需datetime
首先使用:
def randomtimes(stime, etime, n):
frmt = '%d-%m-%Y %H:%M:%S'
stime = datetime.datetime.strptime(start, frmt)
etime = datetime.datetime.strptime(end, frmt)
td = etime - stime
return [random.random() * td + stime for _ in range(n)]
Run Code Online (Sandbox Code Playgroud)
1. 但是,请记住,如果您处理的是本地时间而不是 UTC 时间,由于夏令时,有些日子实际上是 23 或 25 小时。阿timedelta
不明白。
归档时间: |
|
查看次数: |
10520 次 |
最近记录: |