Find the closest time from a list of times

Viewed 29929

So, here's the scenario. I have a file with a created time, and I want to choose a time from a list of times that that file's created time is closest or equal too...what would be the best way to accomplish this?

12 Answers

This is a generalized solution to the question, "Find the closest time from a list of times". This solution finds the closest time before and after a given search time.

//For finding the closest time in a list using a given search time...

var listOfTimes = new List<DateTime>();
listOfTimes.Add(DateTime.Parse("1/1/2000"));
listOfTimes.Add(DateTime.Parse("1/2/2000"));
listOfTimes.Add(DateTime.Parse("1/3/2000"));
listOfTimes.Add(DateTime.Parse("1/4/2000"));
listOfTimes.Add(DateTime.Parse("1/5/2000"));

var searchTime = DateTime.Parse("1/3/2000");

var closestBefore = listOfTimes.LastOrDefault(t => t < searchTime);
var closestAfter = listOfTimes.FirstOrDefault(t => t > searchTime);

Console.WriteLine(closestBefore);
Console.WriteLine(closestAfter);

/*
searchTime: 1/3/2000
before:     1/2/2000 12:00:00 AM
after:      1/4/2000 12:00:00 AM

searchTime: 1/1/1900 (edge case)
before:     1/1/0001 12:00:00 AM (DateTime.MinValue)
after:      1/1/2000 12:00:00 AM

searchTime: 1/1/2001 (edge case)
before:     1/5/2000 12:00:00 AM 
after:      1/1/0001 12:00:00 AM (DateTime.MinValue)
*/

Related