datetime最低值查找

问题描述 投票:0回答:4

我有一些DateTime值。如何从值中选择最低日期以及哪个数组包含该值。

DateTime file1date = DateTime.ParseExact(fileListfordiff[0].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file2date = DateTime.ParseExact(fileListfordiff[1].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file3date = DateTime.ParseExact(fileListfordiff[2].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file4date = DateTime.ParseExact(fileListfordiff[3].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file5date = DateTime.ParseExact(fileListfordiff[4].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file6date = DateTime.ParseExact(fileListfordiff[5].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
c# .net datetime
4个回答
-1
投票

你可以做点什么

List<DateTime> fileDate = new List<DateTime>();
for(int i=0;i<=5;i++)
{
   fileDate.Add(DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture));
}
DateTime minVal = fileDate.Min();
int minIndex = fileDate.IndexOf(minVal);

1
投票

我建议您也使用数组作为文件日期。这也使您可以在填充数组时获得最低值:

var filesDate = new DateTime[fileListfordiff.Length];
var lowestDate = DateTime.MaxValue;
var lowestDateIndex = -1;
for(int i=0; i < fileListfordiff.Length; i++)
{
    filesDate[i] = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
    if(filesDate[i] < lowestDate)
    {
        lowestDate = filesDate[i];
        lowestDateIndex = i;
    }
}

0
投票

如果您愿意使用MoreLINQ,请考虑以下方法:

var fileDate = new List<DateTime>();
for (int i = 0; i <= 5; i++)
{
    fileDate.Add(DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture));
}

var arrayIndex = fileDate
    .Select((value, index) => new {index, value})
    .MinBy(z => z.value).index;

Select调用允许您同时获取值和索引,而MinBy允许您获得具有最低值的条目。


0
投票

首先创建一个DateTimes数组。将值保存到数组然后您可以使用LINQ获取最低日期。

    DateTime[] array = new DateTime[6];

    for (int i = 0; i < 6; i++)
    {
        array[i] = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
    }

    var minDate = array.Min();

或者考虑一个您不需要保存值的情况,只需找到最低的日期。

    DateTime minDate = DateTime.MaxValue;

    for (int i = 0; i < 6; i++)
    {
        var date = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture); ;
        if (date < minDate) minDate = date;
    }
© www.soinside.com 2019 - 2024. All rights reserved.