c # Создать список выбранных интервалов времени - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать центр города, который будет отображать время с 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 голосов
/ 21 мая 2018

Почему бы не вычислить количество элементов ?

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();
0 голосов
/ 21 мая 2018

Примерно так?

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...