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

时间:2013-08-19 18:44:24

标签: c#

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

2 个答案:

答案 0 :(得分:1)

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

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

现在,您可以添加随机的刻度线,以便在DateTimedt1之间随机dt2

DateTime dtRand = dt1.AddTicks(randTicks);

答案 1 :(得分:1)

这应该让你开始:

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值。