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);
现在您只需使用 min
和 max
日期时间设置开始和结束日期(基本上就是范围)。
我需要在 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);
现在您只需使用 min
和 max
日期时间设置开始和结束日期(基本上就是范围)。