我有一个听众需要在给定的时间段内随机活动 10 次,持续 20 分钟。因此,如果时间段是从 2013/08/20 10:00 到 2013/08/20 22:00,我需要在此范围之间生成 10 次随机 DateTime,记住听众需要 20 分钟的时间.
问问题
3773 次
2 回答
1
您可以使用Ticks
on 属性DateTime
找出两者之间的差异,然后在该范围内生成随机数量的刻度:
Random r = new Random();
int randTicks = r.Next(0, (int) (dt2.Ticks - dt1.Ticks));
现在您可以添加随机的 # 滴答声以在 和 之间进行随机DateTime
化:dt1
dt2
DateTime dtRand = dt1.AddTicks(randTicks);
于 2013-08-19T18:51:14.547 回答
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
}
注意:您需要提供endDate
和startDate
值。
于 2013-08-19T18:52:28.333 回答