Опитвам се да проверя между 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();