我需要清醒的头脑来检查另一个间隔之间的日期范围是否为假。这是发生了什么:
DateTime[] dates = new DateTime[20];
dates[0] = Convert.ToDateTime(initial_date);
for (int i = 1; i <= 19; i++)
{
dates[i] = initial_date.AddYears(i);
}
所以我有一个存储 20 个日期的数组。如果 initial_date = 1/20/2012 数组从 dates[0] = 1/20/2012 到 dates[19] = 1/20/2031 现在我想检查用户是否选择了两个日期,例如 1 /1/2013 和 1/1/2014 选择位于数组的第一个元素 (dates[0]) 和第二个 (dates[1]) 之间。至今:
DateTime a1 = Convert.ToDateTime(vtable.Rows[0][0]);
DateTime a2 = Convert.ToDateTime(vtable.Rows[vtable.Rows.Count - 1][0]);
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MaxValue;
for (int i = 0; i < 20; i++)
{
if (a1.CompareTo(dates[i]) >= 0)
{
start = dates[i];
for (int j = 19; j > 0 ; j--)
{
if (a2.CompareTo(dates[j]) >= 0)
{
end = dates[j];
break;
}
}
break;
}
}
当用户选择仅位于数组的一个元素之间的日期范围时,这一直有效。例如,如果选择是 2012 年 1 月 30 日 - 2012 年 5 月 30 日,那么 start = date[0] 和 end = date[0] 我知道我可以简单地在末尾声明 end == unassigned 然后 end = start但我认为纠正算法比最后应用补丁更好非常感谢