C#中的随机时间

Random time in C#

我需要在 C# 中生成自定义随机时间 - 不是随机几分钟,而是仅间隔 15 分钟,例如 - 不是 17:11,而是 17:15。 我怎样才能生成这个?我是这个问题的新手。 谢谢

如果您能更好地定义您的要求,我们可以写出更好的答案。

一般情况下,使用Random创建一个随机的年、月、日、时、分。然后我会使用 Torivo's link 适当舍入。

如果这不完全符合要求,请多交流一下目的和您尝试过的方法。

一天有24小时,每小时有4片15分钟。这意味着您需要 [0, 24*4) 范围内的随机整数(包括 0,不包括上限)。使用此整数值,您可以轻松获得时间。时间是 N / 4 小时 (N % 4) * 15 分钟,但是 TimeSpan 已经有一种方法可以为您完成大部分计算。代码是这样的:

// make sure you have a single shared random, and not create it every time like this
Random rnd = new Random();
int n = rnd.Next(24*4);
TimeSpan ts = TimeSpan.FromMinutes(n * 15);

您没有指定随机日期时间的范围,所以我将保留该范围供您添加:

// Define the range with these two datetime values (currently 2 years from this moment):
DateTime min = DateTime.Now;                // start
DateTime max = DateTime.Now.AddYears(2);    // end

// Range in seconds
int range = (int)max.Subtract(min).TotalMinutes;

// generate random amount of minutes
int r = new Random().Next(0, range);

// add minutes to start date
DateTime rDate = min.AddMinutes(r);

// Set a timespan to round up to (you wanted 15 minutes)
TimeSpan span = TimeSpan.FromMinutes(15);

// Finally, we round it up and have the resulting random datetime!
DateTime result = new((rDate.Ticks + span.Ticks - 1) / span.Ticks * span.Ticks, rDate.Kind);

现在您只需使用 minmax 日期时间设置开始和结束日期(基本上就是范围)。