在给定的DateTime范围-C#之间生成随机DateTime

本文关键字:DateTime 之间 随机 -C# 范围 | 更新日期: 2023-09-27 18:28:11

我有一个监听器,它需要在给定的时间段内随机活动10次,比如20分钟。因此,如果时间段是从2013/08/20 10:00到2013/08/2020 22:00,我需要在这个范围之间生成10次随机DateTime,记住听众需要20分钟的时间。

在给定的DateTime范围-C#之间生成随机DateTime

您可以使用DateTime上的Ticks属性来查找两者之间的差异,然后生成该范围内的随机数:

Random r = new Random();
int randTicks = r.Next(0, (int) (dt2.Ticks - dt1.Ticks));

现在,您可以添加随机#的tick,在dt1dt2:之间生成随机DateTime

DateTime dtRand = dt1.AddTicks(randTicks);

这应该会让你开始:

TimeSpan timeSpan = endDate - startDate;
var randomTest = new Random();
for(var i = 0; i < 10; i++)
{
    TimeSpan newSpan = new TimeSpan(0, randomTest.Next(0, (int)timeSpan.TotalMinutes), 0);
    DateTime newDate = startDate + newSpan;
    // Do something with newDate before you loop again
}

注意:您需要提供endDatestartDate的值。