Найти ближайший следующий час - PullRequest
0 голосов
/ 17 октября 2011

Привет, кто-нибудь может сказать, как найти ближайший час с помощью c #

string target='13:10';
List<string> hours = ['4:30', '12:10', '15:3', '22:00'];

Результат должен быть 15: 3

Любая помощь будет оценена :)

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Поскольку ваш список отсортирован, вы можете просто выбрать первый элемент, который больше или равен цели:

string result = hours.First(x => TimeSpan.Parse(x) >= TimeSpan.Parse(target));
0 голосов
/ 17 октября 2011

Вы можете написать запрос LINQ, я полагаю.

Предполагая, что у вас есть массив DateTime, а не string:

class Program
{
    static void Main()
    {
        var target = new DateTime(2011, 10, 17, 13, 10, 0);
        IEnumerable<DateTime> choices = GetChoices();
        var closest = choices.OrderBy(c => Math.Abs(target.Subtract(c).TotalMinutes)).First();
        Console.WriteLine(closest);
    }

    private static IEnumerable<DateTime> GetChoices()
    {
        return new[]
                   {
                       new DateTime(2011, 10, 17, 4, 30, 0), 
                       new DateTime(2011, 10, 17, 12, 10, 0), 
                       new DateTime(2011, 10, 17, 15, 30, 0), 
                       new DateTime(2011, 10, 17, 22, 00, 0), 
                   };
    }
}

Я пробовал этои на самом деле я получаю 12:10 в результате, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...