C#增量间隔(Incrementing Interval)循环未实现预期递增效果求助
C#增量间隔(Incrementing Interval)循环未实现预期递增效果求助
兄弟,我一眼就瞅出你代码里的核心问题了!你想要的是相邻时间点之间的间隔逐步递增(比如第一次间隔30秒,第二次31秒,以此类推),但你当前的写法完全搞错了时间累加的逻辑,导致根本达不到你要的效果。
先给你拆解下问题出在哪:
- 你现在每次计算
nextDT都是直接用DateTime.Now加上ii秒,而ii每次加60。举个例子:第一个时间是「现在+1800秒」,第二个是「现在+1860秒」,那这两个时间点的间隔其实只有60秒,完全不是你想要的“间隔越来越大”! - 你说的“只加了一个数,没有递增”,大概率是因为这个逻辑错误,导致输出的时间间隔看起来没变化,甚至可能因为循环执行太快,
DateTime.Now在短时间内几乎没变化,让你误以为没递增。
给你改好的代码,直接用就行:
// 把初始变量定义得更清晰,避免混淆 int initialInterval = 1800; // 初始间隔(秒,对应你原来的ii) int intervalIncrement = 60; // 每次间隔的增量(秒,对应你原来的ib) private void generateGridBtn_Click(object sender, EventArgs e) { dataGridView1.Rows.Clear(); int currentInterval = initialInterval; DateTime currentTime = DateTime.Now; // 从当前时间开始 for (int i = 0; i < 1000; i++) { // 先把当前时间加上当前间隔,得到下一个要显示的时间点 currentTime = currentTime.AddSeconds(currentInterval); // 添加到DataGridView里 dataGridView1.Rows.Add(); dataGridView1.Rows[i].Cells[0].Value = currentTime.ToString("dd.MM.yyyy HH:mm:ss"); // 间隔递增,为下一次循环做准备 currentInterval += intervalIncrement; } }
这个代码的逻辑是基于上一个时间点来累加间隔:
- 先记录初始的当前时间和初始间隔
- 每一次循环,都把当前时间加上当前的间隔,得到下一个时间点
- 把这个时间点显示出来后,再把间隔增加指定的增量
- 循环往复,这样相邻两个时间点的间隔就会越来越大,完全符合你的需求!
另外给你提个小建议:变量名尽量起得有意义,像initialInterval、intervalIncrement这种,比ii、ib好读太多,以后维护代码也不会头疼~
备注:内容来源于stack exchange,提问作者Barak Stav
相关产品推荐
相关产品推荐

