查找下一个最近的日期

C.J*_*.J. 3 c# datetime datetime-format

我有一些日期当前存储为字符串列表.

例如:

List<string> dates = new List<string>();
dates.Add("1/10/14");
dates.Add("2/9/14");
dates.Add("1/15/14");
dates.Add("2/3/14");
dates.Add("2/15/14");
Run Code Online (Sandbox Code Playgroud)

(日期mm/dd/yy格式)

我将采用用户的输入(也是mm/dd/yy格式),但作为字符串.

现在,我想在数组中找到用户输入日期后最接近的日期.

例如,如果用户输入"1/13/14",则输出应为"1/15/14".如果用户输入"2/5/14",则下一个最近的日期是"2/9/14".但是,如果用户输入的日期晚于最后一个日期(例如"3/1/14",它将STILL返回数组中的最后一个日期"2/15/14")

我知道在某些时候你必须转换为类型DateTime,但我无法弄清楚找到这样的日期的逻辑.

AD.*_*Net 8

List<string> dates = new List<string>();
            dates.Add("1/10/14");
            dates.Add("2/9/14");
            dates.Add("1/15/14");
            dates.Add("2/3/14");
            dates.Add("2/15/14");

            var allDates = dates.Select(DateTime.Parse).OrderBy(d=>d).ToList();
            var inputDate = DateTime.Parse("1/13/14");

            var closestDate = inputDate >= allDates.Last()
                ? allDates.Last()
                : inputDate <= allDates.First()
                    ? allDates.First()
                    : allDates.First(d => d >= inputDate);
Run Code Online (Sandbox Code Playgroud)

现在我只是解析字符串,但你应该单独处理它.这是简单的简单LINQ,你可以去看看并做二分搜索.