如何同时获得随机日期和时间C#

如何同时获得随机日期和时间C#,c#,date,datetime,random,time,C#,Date,Datetime,Random,Time,我正在尝试编写一个代码,生成所有(yyyy-mm-dd-hh:mm:ss)值发生更改的随机日期和时间 我使用了这个代码,但它只更改日期和固定时间 DateTime RandomDay() { 日期时间开始=新的日期时间(2013,1,1,1,1,1); Random gen=新的Random(); int range=(DateTime.Today-start).Days; 返回开始添加天数(下一代(范围)); } 我说如果我写一个生成随机日期的代码,并将其存储在variable1中,然后写另

我正在尝试编写一个代码,生成所有(yyyy-mm-dd-hh:mm:ss)值发生更改的随机日期和时间

我使用了这个代码,但它只更改日期和固定时间

DateTime RandomDay()
{
日期时间开始=新的日期时间(2013,1,1,1,1,1);
Random gen=新的Random();
int range=(DateTime.Today-start).Days;
返回开始添加天数(下一代(范围));
}
我说如果我写一个生成随机日期的代码,并将其存储在variable1中,然后写另一个生成随机时间的代码,并将其存储在variable2中,然后只从variable1中选择日期,只从variable2中选择时间,然后将variable1和variable2组合在一起,这样我就可以生成随机日期和时间 因此,我编写了另一个方法来生成时间

DateTime RandomTime()
        {
            DateTime start = new DateTime(2013, 1, 1, 1, 1, 1);
            Random gen = new Random();

            int range = (DateTime.Today - start).Hours;
            return start.AddHours(gen.Next(range));
        }
现在,RandomTime方法中的问题是,它只生成随机小时,不会改变分和秒的值


有没有解决代码问题的建议?是否仍然可以为所有(yyyy-mm-dd hh:mm:ss)生成随机值?

这里有一个方法可以随机生成日期和时间的每一部分

它使用适当的限制,因此生成的日期是有效的(1-9999年内的年,1-12年内的月,调用
DateTime.DaysInMonth
,因此我们不会以2月31日结束,等等)


这是一个单线解决方案。1行用于返回部件;)

注1:
\u ran.NextDouble()
给出0到1之间的随机值。因此,您添加到最小日期时间的刻度数量将介于
0
datetime.MaxValue.ticks
之间。因此,随机日期时间将介于最小日期时间和最大日期时间之间

注2:
DateTime.Min.Ticks
等于0。因此,即使添加了最大日期时间刻度,此进程也不会溢出


下面是如何生成10k随机日期时间

DateTime[] datetimes = new DateTime[10000];

for (int i = 0; i < datetimes.Length; i++)
{
    datetimes[i] = RandomDateTime();
}

只需在DateTime的法定范围内添加一个随机的秒数你在单元测试中没有使用这些,对吗?只需对所有构造函数参数使用随机数Hanks all,但我不明白,你能复制代码部分并告诉我在哪里可以做更改吗?因为我花了很长时间试图找到解决方案,从3天到现在,我不想把代码放在一个循环中,我想在演示数据库中插入至少10000条记录,我想要事务日期时间随机性这给我一个奇怪的值“WebApplication1.AddToParkingDb+d__0”受保护的无效按钮1_单击(对象发送者,事件参数e){var randomDateTimes=GenerateRandomDates(10000);Response.Write(randomDateTimes);}这是一个惊人的结果,感谢stackoverflow让我们认识像你这样的天才:)我只需更改var year=rnd.Next(2013、2015);所以我可以限制时间
var randomDateTimes = GenerateRandomDates(10000);
private static Random _ran = new Random();

public static DateTime RandomDateTime()
{
    return
        DateTime.MinValue.Add(
            TimeSpan.FromTicks((long) (_ran.NextDouble()*DateTime.MaxValue.Ticks)));
}
DateTime[] datetimes = new DateTime[10000];

for (int i = 0; i < datetimes.Length; i++)
{
    datetimes[i] = RandomDateTime();
}
public static DateTime RandomDateTime(DateTime min, DateTime max)
{
    return
        DateTime.MinValue.Add(
            TimeSpan.FromTicks(min.Ticks + (long) (_ran.NextDouble()*(max.Ticks - min.Ticks))));
}