我试图检查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 "。
我如何实现这样的功能?
答案 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();