c# - 如何同时获取随机日期和时间 C#

标签 c# date datetime random time

我正在尝试编写一个代码来生成随机日期和时间,其中 (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));
        }

我说好吧,如果我写一个生成随机日期的代码,并将其存储在变量 1 中,然后编写另一个生成随机时间的代码,并将其存储在变量 2 中,然后只从变量 1 中选择日期,然后选择时间只从 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 日等结束)。

public IEnumerable<DateTime> 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);

关于c# - 如何同时获取随机日期和时间 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34032695/

相关文章:

c# - 当对象超出 C# 范围时?

c# - 跟踪状态参数是什么

python - pandas to_datetime 函数问题

python - 在 Pandas 中查询 HDF5

c# - 如何使我的数字生成器包含最大值? C#

c# - 如何让我的产品成为 30 天的试用版?

java - 使用正则表达式分割字符串

javascript - 与日期字符串输入相关的年龄计算错误

java - 取 3 个整数,创建一个日期

php - 使用 Doctrine DQL 插入带有 DateTime 的 mysql 行