最短日期和最长日期

我有一个日期列表如下

List nameList = new List(); nameList.Add("20120618PM"); nameList.Add("20120622PM"); nameList.Add("20120622AM"); nameList.Add("20120628PM"); nameList.Add("20120702PM"); nameList.Add("20120629AM"); nameList.Add("20120629PM"); 

我想从列表中找到MAXDATE和MIN DATE。请告诉我如何继续。

问候,

如果日期格式为yyyyMMdd,那么即使使用AM / PM也可以将其排序为字符串

  nameList.Max() 

如果您有一年加上小时/分钟和上午/下午那么您必须解析为DateTime。 我推荐解析,不像其他答案中所建议的那样。

那是什么格式的? "yyyyMMddtt"

AM PM有约会。 没有时间陪AM / PM。 所以我假设AM是00:00:00,PM是12:00:00

首先纠正您的格式然后使用它

 List temp = nameList.Select(x => DateTime.ParseExact(x, "yyyyMMddtt", CultureInfo.InvariantCulture)).ToList(); 

然后

 temp.Min("yyyyMMddtt"); temp.Max("yyyyMMddtt"); 
 // 1. Convert your string list to datetimes IEnumerable dates = nameList.Select(m => DateTime.Parse(m, yourFormatProvider)); // 2. Get first and last date DateTime maxDate = dates.Max(); DateTime minDate = dates.Min(); 

如果我不得不猜测,我似乎在做什么。 我会这样做的

 var dates = nameList.ConvertAll(s => { var dateString = s.SubString(6); var timeString = s.SubString(7, 2); var date = DateTime.Parse(dateString); if (timeString == "PM") { date = date.AddHours(12); } return date; }); var max = date.Max(); var min = date.Min(); 

由于您在注释中将格式指定为yyyyMMdd ,因此需要从字符串中修剪PMAM

 List dateList = nameList.Select(x => DateTime.ParseExact( x.TrimEnd("PM".ToCharArray()).TrimEnd("AM".ToCharArray()), "yyyyMMdd", CultureInfo.InvariantCulture) ).ToList(); var Minimum = dateList.Min(); var Maximum = dateList.Max(); Console.WriteLine(Minimum.ToString()); Console.WriteLine(Maximum.ToString()); 

这会给你:

6/18/2012 12:00:00 AM
7/2/2012 12:00:00 AM