/ / Как да проверите коя дата е най-новата и да я вземете [затворен] - c #

Как да проверите коя дата е най-новата и да я вземете [затворен] - 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".

Как да въведа такава функция?

Отговори:

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;
}

и това ще ви донесе най-високата дата.


1 за отговор № 2

Опитайте тази :

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 за отговор № 3

Можете да поставите DateTimes стойност в List<DateTime> и да сортирате списъка си надолу, за да получите последния, както е показано по-долу

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();