如何查看最新的日期并选择它

时间:2018-05-07 12:39:46

标签: c#

我试图检查4个输入,其中一个日期(时间)是当前日期(和时间)的最新日期。

输入可以是这样的:

2018-05-07 18:31:57
2018-05-07 18:27:02
2018-05-07 18:26:19
2018-05-07 18:23:44

我希望它能够返回最新版本,所以如果时间是" 2018-05-07 18:32:00 "它应该返回" 2018-05-07 18:31:57 "。

我如何实现这样的功能?

3 个答案:

答案 0 :(得分:1)

试试这个:

var inputDates = new List<DateTime>
                {                
                    DateTime.Parse("2018 - 05-07 18:31:57"),
                    DateTime.Parse("2018 - 05 - 07 18:27:02"),
                    DateTime.Parse("2018 - 05 - 07 18:26:19"),
                    DateTime.Parse("2018 - 05 - 07 18:23:44")
                };
   var inputDateTime = DateTime.Parse("2018 - 05 - 07 18:32:00");
   var date = inputDates.Where(d => d < inputDateTime).OrderByDescending(r => r.Ticks).FirstOrDefault();

答案 1 :(得分:1)

如果您愿意使用LINQ,那就很容易:

List<DateTime> times = new List<DateTime> {
            DateTime.Parse("2018 - 05-  07 18:31:57"),
            DateTime.Parse("2018 - 05 - 07 18:27:02"),
            DateTime.Parse("2018 - 05 - 07 18:26:19"),
            DateTime.Parse("2018 - 05 - 07 18:23:44")
        };

 DateTime higestDate = times.Max();

或者,以较短的方式,基本相同:

DateTime higestDate = new List<DateTime> {
            DateTime.Parse("2018 - 05-  07 18:31:57"),
            DateTime.Parse("2018 - 05 - 07 18:27:02"),
            DateTime.Parse("2018 - 05 - 07 18:26:19"),
            DateTime.Parse("2018 - 05 - 07 18:23:44")
        }.Max();

我测试了它并且工作正常。

否则你将不得不循环遍历它们并比较每一个:

 List<DateTime> times= new List<DateTime> {
            DateTime.Parse("2018 - 05-07 18:31:57"),
            DateTime.Parse("2018 - 05 - 07 18:27:02"),
            DateTime.Parse("2018 - 05 - 07 18:26:19"),
            DateTime.Parse("2018 - 05 - 07 18:23:44")
        };

        DateTime highestDate = times[0];
        foreach(DateTime date in times)
        {
            if (date > highestDate)
                highestDate = date;
        }

这将使你获得最高日期。

答案 2 :(得分:-1)

您可以将DateTimes值添加到List<DateTime>并对列表desc进行排序以获取最新的一个

List<DateTime> myCollection = new List<DateTime>();

myCollection.Add(Convert.ToDateTime(DateTime.Now));
myCollection.Add(Convert.ToDateTime(DateTime.Now));
myCollection.Add(Convert.ToDateTime(DateTime.Now));
var descendingOrder = myCollection.OrderByDescending(i => i).FirstOrDefault();