C# 检查DateTime是否大于另一个DateTime的正确方法
我想检查CustomFormat中的一个DateTime是否大于另一个DateTime,但是在代码删除了很多项之后,检查就可以了,而且没有一项是正确的。这是我的密码。作业是删除任何超过3天的ListViewItemC# 检查DateTime是否大于另一个DateTime的正确方法,c#,datetime,for-loop,C#,Datetime,For Loop,我想检查CustomFormat中的一个DateTime是否大于另一个DateTime,但是在代码删除了很多项之后,检查就可以了,而且没有一项是正确的。这是我的密码。作业是删除任何超过3天的ListViewItem for (int i = 0; i < lvValid.Items.Count; i++) { if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
for (int i = 0; i < lvValid.Items.Count; i++)
{
if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
{
lvValid.Items[i].Remove();
}
}
for(int i=0;i if(DateTime.Now.AddDays(-3)>DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
{
lvValid.Items[i]。Remove();
}
}
我已经试过foreach了,但没用。它每隔一秒就删除一个元素,但这是不正确的向前循环的一个大问题是,如果删除一个项目,那么剩余项目的索引将向左移动。因此,在
i==1
处,删除后下一项将位于1
。然后,i
将递增,并跳过前一项下一项
我建议使用反向循环:
for (int i = lvValid.Items.Count - 1; i >= 0 ; i--)
{
if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
{
lvValid.Items[i].Remove();
}
}
我个人建议使用原始数据。首先根据您的条件筛选数据,然后重新填充
列表视图
也许您应该反转for循环,而不是使用.AddDays(-3)
for(int i=lvValid.Items.Count-1;i>=0;i--)
{
如果(DateTime.Now如果要使用前向循环(如果删除事项的顺序),则在不删除项目时,应增加i++
:
// we don't want redrawing on each removing (i.e. lvValid blicking)
lvValid.BeginUpdate();
try
{
for (int i = 0; i < lvValid.Items.Count; ) // don't icrement i here...
if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
lvValid.Items[i].Remove();
else
++i; // ... but there
}
finally
{
// when finisihing removing, redraw lvValid if required
lvValid.EndUpdate();
}
//我们不希望每次删除时都重新绘制(即lvValid blicking)
lvValid.BeginUpdate();
尝试
{
for(int i=0;i if(DateTime.Now.AddDays(-3)>DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
lvValid.Items[i].Remove();
其他的
++i、 //…但是在那里
}
最后
{
//完成移除时,如果需要,重新绘制LVL
lvValid.EndUpdate();
}
“在customformat中”,是否已验证已正确解析解析的值?能否显示lvValid.Items[i]子项[1]的示例.Text
?它的格式是什么?此外,该循环最多会删除其他所有项目,因为一旦删除一个项目,下列项目会向上移动一个索引,然后跳过。通常,会使用反向运行的循环删除项目LvValid.items[i]。子项[1].Text示例为:2019.08.06 8:50:43是否修复了删除的项目,因此现在可以正确执行所有操作?或是向前循环,但当项目被删除时,请执行i--
以避免跳过项目。更容易执行向后循环imho。@LarryPetshow我很高兴听到它可以工作。不过,我还是建议在基础数据模型上工作,而不是在e视觉表现。:)
// we don't want redrawing on each removing (i.e. lvValid blicking)
lvValid.BeginUpdate();
try
{
for (int i = 0; i < lvValid.Items.Count; ) // don't icrement i here...
if (DateTime.Now.AddDays(-3) > DateTime.Parse(lvValid.Items[i].SubItems[1].Text))
lvValid.Items[i].Remove();
else
++i; // ... but there
}
finally
{
// when finisihing removing, redraw lvValid if required
lvValid.EndUpdate();
}