按日期范围过滤对象

我目前正在尝试制作一种算法,将对象的捕获日期(它们是图像)与用户选择的日期范围进行比较。图像的捕获日期当前存储为 mm/yyyy。


在拆分并存储 startMonth 和 startYear 是用户输入的值后,我将捕获的年份和月份转换为整数。


在将它们拆分并存储为monthand之后,我将捕获日期的年份和月份转换为整数year。startMonth并startYear存储用户输入的值。


如果它在日期范围内,那么我将它从存储的列表中添加到“DisplayList”。


我需要它来识别开始月份可以大于结束月份的日期。我可能错过了一些简单的东西。


string month = split[0];

string year = split[1];


if (startYear <= Convert.ToInt32(year) && endYear >= Convert.ToInt32(year))

{

  if (startYear == Convert.ToInt32(year) && endYear == Convert.ToInt32(year))

  {

    if (startMonth <= Convert.ToInt32(month) && endMonth >= Convert.ToInt32(month))

    {

      DisplayList.Add(ImageList[i]);     // Adds it to the DisplayList                          

    }

  }

  else if (startYear == Convert.ToInt32(year) || endYear == Convert.ToInt32(year))

  {

   if (startMonth <= Convert.ToInt32(month) && endMonth >= Convert.ToInt32(month))

   {

     DisplayList.Add(ImageList[i]);

   }

   else if (startYear == Convert.ToInt32(year) && startMonth <= Convert.ToInt32(month))

   {

     DisplayList.Add(ImageList[i]);

   }

   else if (endYear == Convert.ToInt32(year) && startMonth >= Convert.ToInt32(month))

   {

     DisplayList.Add(ImageList[i]);

   }

  }

}


慕姐8265434
浏览 210回答 1
1回答

子衿沉夜

将您的日期存储为日期会更简单,但如果您没有选择,则应执行以下操作:var startDate = new DateTime(Convert.ToInt32(startYear), Convert.ToInt32(startMonth), 1);var endDate = new DateTime(Convert.ToInt32(endYear), Convert.ToInt32(endMonth), 1);var date = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), 1);// do whatever comparisons with date, startDate and endDateif(startDate <= date && date <= endDate){}还要注意,有很多ifs 要做DisplayList.Add(ImageList[i]);是很奇怪的。我会尝试将其考虑在内:我到底什么时候需要将图像添加到该显示列表中?然后使用一个if:if(thatCondition ||&nbsp; &nbsp;thisCondition ||&nbsp; &nbsp;thatOtherCondition){&nbsp; &nbsp; DisplayList.Add(ImageList[i]);}
打开App,查看更多内容
随时随地看视频慕课网APP