代码之家  ›  专栏  ›  技术社区  ›  the_tr00per

创建选定时间间隔的列表

  •  0
  • the_tr00per  · 技术社区  · 8 年前

    我正在尝试创建一个市中心,在选定的时间间隔内显示从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 回复  |  直到 8 年前
        1
  •  7
  •   Dmitrii Bychenko    8 年前

    为什么不计算 项目数 ?

    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();
    
        2
  •  2
  •   Matthew Watson    8 年前

    像这样?

    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);
    }