c#创建所选时间间隔的列表

时间:2018-05-21 09:20:51

标签: c# list datetime

我正在尝试创建一个市中心,它将按照选定的间隔从00:00到24:59显示时间(这可能会从5分钟变为10分钟等等

所以例如

列表
00:10
00:20
00:30

或可能是

00:15 
00:30

我正在使用以下工作,但仅适用于选定的迭代次数(33):

List<string> query = Enumerable
  .Range(0, 33)
  .Select(i => DateTime.Today
     .AddHours(0)
     .AddMinutes(i * (double)IntervalParameter)
     .ToString())
  .ToList();

*上述示例的IntervalParameter = 10.

我正在寻求适应这一点,因此它运行了整整24小时的时间范围。只是寻找最有效的方法来做到这一点。

2 个答案:

答案 0 :(得分:7)

为什么不计算项数

int IntervalParameter = 5;

// .Range(0, 1440 / IntervalParameter) - see Zohar Peled's comment -  
// is brief, but less readable
List<string> query = Enumerable
  .Range(0, (int) (new TimeSpan(24, 0, 0).TotalMinutes / IntervalParameter))
  .Select(i => DateTime.Today
     .AddMinutes(i * (double)IntervalParameter) // AddHours is redundant
     .ToString("HH:mm"))                        // Let's provide HH:mm format 
  .ToList();

答案 1 :(得分:2)

这样的东西?

public static IEnumerable<TimeSpan> Intervals(TimeSpan inclusiveStart, TimeSpan exclusiveEnd, TimeSpan increment)
{
    for (var time = inclusiveStart; time < exclusiveEnd; time += increment)
        yield return time;
}

使用示例:

foreach (var time in Intervals(TimeSpan.Zero, TimeSpan.FromDays(1), TimeSpan.FromMinutes(15)))
{
    Console.WriteLine(time);
}