代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

如何在时间范围内进行除法[复制]

  •  21
  • Dr. Rajesh Rolen  · 技术社区  · 14 年前

    这个问题已经有了答案:

    我有价值 TimeSpan ,假设: tsp1 =2小时5分钟。 我还有一个 时间跨度 包含如下值的变量: tsp2 =0小时2分钟

    请告诉我如何划分 tsp1公司 通过 tsp2型 这样我就能得到准确的次数 tsp2型 分成 tsp1公司 剩下的是什么。

    我正在使用Visual Studio 2008。

    谢谢。

    3 回复  |  直到 10 年前
        1
  •  43
  •   Jon Skeet    14 年前

    最简单的方法可能只是用记号来表示它们的长度,然后将它们分开。例如:

    long ticks1 = tsp1.Ticks;
    long ticks2 = tsp2.Ticks;
    
    long remainder;
    long count = Math.DivRem(ticks1, ticks2, out remainder);
    
    TimeSpan remainderSpan = TimeSpan.FromTicks(remainder);
    
    Console.WriteLine("tsp1/tsp2 = {0}, remainder {1}", count, remainderSpan);
    
        2
  •  7
  •   Community c0D3l0g1c    7 年前

    a部分b:

    double adivb = (double)a.Ticks/b.Ticks;
    

    编辑:

    我发现另一篇关于同一主题的文章

    How can I achieve a modulus operation with System.TimeSpan values, without looping?

        3
  •  2
  •   Henk Holterman    7 年前

    一个 int 在64年内保持足够的秒数,只要你保持在这一水平以下:

    int count = (int) (tsp1.t.TotalSeconds / tsp2.t.TotalSeconds);
    double remainder = tsp1.t.TotalSeconds - (count * tsp2.t.TotalSeconds);
    

    也可以把余数转换成int。