You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;
    }
}

这个代码的逻辑是基于上一个时间点来累加间隔:

  1. 先记录初始的当前时间和初始间隔
  2. 每一次循环,都把当前时间加上当前的间隔,得到下一个时间点
  3. 把这个时间点显示出来后,再把间隔增加指定的增量
  4. 循环往复,这样相邻两个时间点的间隔就会越来越大,完全符合你的需求!

另外给你提个小建议:变量名尽量起得有意义,像initialInterval、intervalIncrement这种,比ii、ib好读太多,以后维护代码也不会头疼~

备注:内容来源于stack exchange,提问作者Barak Stav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:09:36