为了账号安全,请及时绑定邮箱和手机立即绑定

按日期范围过滤对象

按日期范围过滤对象

C#
慕姐8265434 2021-11-28 16:01:38
我目前正在尝试制作一种算法,将对象的捕获日期(它们是图像)与用户选择的日期范围进行比较。图像的捕获日期当前存储为 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]);   }  }}
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

将您的日期存储为日期会更简单,但如果您没有选择,则应执行以下操作:


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 endDate

if(startDate <= date && date <= endDate)

{


}

还要注意,有很多ifs 要做DisplayList.Add(ImageList[i]);是很奇怪的。

我会尝试将其考虑在内:我到底什么时候需要将图像添加到该显示列表中?


然后使用一个if:


if(thatCondition ||

   thisCondition ||

   thatOtherCondition)

{

    DisplayList.Add(ImageList[i]);

}


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 209 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信