下一个小时找到最近的

时间:2011-10-17 13:06:01

标签: c# datetime

嗨,有人可以说如何用c#

找到最接近的小时
string target='13:10';
List<string> hours = ['4:30', '12:10', '15:3', '22:00'];

结果必须是15:3

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:2)

由于您的列表已排序,您只需选择大于或等于目标的第一个元素:

string result = hours.First(x => TimeSpan.Parse(x) >= TimeSpan.Parse(target));

答案 1 :(得分:0)

我想你可以写一个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,但你明白了。