当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何获得随机日期和时间C#》经验,为你挑选了1个好方法。

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

我使用了这段代码但它只改变了日期并修改了时间

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

            int range = (DateTime.Today - start).Days;
            return start.AddDays(gen.Next(range));
        }

我说如果我编写一个生成随机日期的代码并将其存储在variable1中,然后编写另一个生成随机时间的代码,然后将其存储在variable2中,然后仅从variable1中选择日期,并选择仅从变量2,然后将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> Grant - REIN..:

这是一种随机生成日期和时间的每个部分的方法.

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

public IEnumerable GenerateRandomDates(int numberOfDates)
{
    var rnd = new Random(Guid.NewGuid().GetHashCode());

    for (int i = 0; i < numberOfDates; i++)
    {
        var year = rnd.Next(1, 10000);
        var month = rnd.Next(1, 13);
        var days = rnd.Next(1, DateTime.DaysInMonth(year, month) + 1);

        yield return new DateTime(year, month, days,
            rnd.Next(0, 24), rnd.Next(0, 60), rnd.Next(0, 60), rnd.Next(0, 1000));
    }
}

生成10,000个:

var randomDateTimes = GenerateRandomDates(10000);

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有