查找下一小时最近的

发布于 2024-12-10 01:18:31 字数 181 浏览 0 评论 0原文

大家好,谁能说一下如何用 c# 找到最近的时间

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

结果必须是 15:3

任何帮助将不胜感激:)

Hi can anyone say how to find the closest hour with c#

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

The result must be 15:3

Any help would be appreciated:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰葑 2024-12-17 01:18:31

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

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

Since your list is sorted, you can simply select the first element that is greater than or equal to the target:

string result = hours.First(x => TimeSpan.Parse(x) >= TimeSpan.Parse(target));
罪#恶を代价 2024-12-17 01:18:31

我想您可以编写 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 作为结果,但你明白了。

You can write a LINQ query, I suppose.

Assuming you actually have an array of DateTime rather than 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), 
                   };
    }
}

I've tried this out and actually I get 12:10 as the result, but you get the idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文