我有一个月和日列表,我需要在给定日期之间搜索此列表中的每个月和日。任何人都可以建议我做最好的方法来获得所需的输出。
例如:
月日列表 -> 01/11、03/15、05/25、09/01
日期之间 -> 2012 年 1 月 1 日至 2013 年 7 月 1 日
预期结果:
2012 年 1 月 11 日,2013 年 1 月 11 日
2012 年 3 月 15 日,2013 年 3 月 15 日
2012 年 5 月 25 日,2013 年 5 月 25 日
2012 年 9 月 1 日
我试过这样,但如果从日期到迄今为止有年数的差距,它会给内存异常和时间和内存复杂性增加,有没有快速的解决方案来获得它?
DateTime[] dateDates = new DateTime[dateTypeList.Rows.Count];
//convert strings to datetimes:
for (int i = 0; i < dateTypeList.Rows.Count; i++)
{
dateDates[i] = Convert.ToDateTime(Convert.ToDateTime(string.Format("{0}/{1}", Convert.ToInt32(dateTypeList.Rows[i]["Month"]), Convert.ToInt32(dateTypeList.Rows[i]["Day"]))));
}
//define start and end time:
DateTime dateStart = new DateTime(2012, 1, 1);
DateTime dateEnd = new DateTime(2013, 7, 1);
List<DateTime> results = new List<DateTime>();
//loop days between start and end time:
for (DateTime a = dateStart; a <= dateEnd; a.AddDays(1))
{
for (int i = 0; i < dateDates.Length; i++)
{
if (dateDates[i] == a)
{
results.Add(a);
}
}
}