2013-08-19 37 views
-5

我有一个听众需要在给定的时间段内10次随机地活动20分钟。所以如果从2013/08/20 10:00到2013/08/20 22:00这段时间,我需要在这个范围之间产生一个随机的DateTime 10次,记住听众需要20分钟的时间。GenGate给定的日期时间范围之间的随机DateTime - C#

+1

谢谢您的分享。你有尝试过什么吗? – tnw

+1

我了解您的要求。到目前为止,你有什么想法? –

+1

你能告诉我们你试过了什么吗? – lesderid

回答

1

您可以使用DateTimeTicks财产找到两者之间的区别,然后生成在该范围蜱的随机数:

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

现在你可以添加蜱是随机#作随机DateTimedt1dt2之间:

DateTime dtRand = dt1.AddTicks(randTicks); 
+0

简单且有效,您可能需要先将两个滴答的差值转换为int,但Next方法不会不需要很长的类型。 – liang

+0

@梁谢谢你,你是对的。更新。 – tnw

+0

不幸的是,这不起作用,因为我测试它,直接投射长整型会导致溢出。 – liang

0

这应该让你开始:

TimeSpan timeSpan = endDate - startDate; 
var randomTest = new Random(); 

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