8

当两种数据类型都是 时,是否有一种有效的方法来计算 X 与 Y 的百分比TimeSpan

例如,一个基本问题1:00:00是 50% 的2:00:00. 00:34:23计算百分比的有效方法是什么4:12:31

4

3 回答 3

13

编辑:根据评论,类型实际上是TimeSpan而不是DateTime,此时一切都很简单。

当您问 X 与 Y 的比例时,这基本上是除法,这很容易实现TimeSpan

public static double Divide(TimeSpan dividend, TimeSpan divisor)
{
    return (double) dividend.Ticks / (double) divisor.Ticks;
}

示例代码:

using System;
using System.IO;
using System.Globalization;
using System.Linq;

class Test
{
    static void Main()
    {
        TimeSpan x = new TimeSpan(0, 34, 23);
        TimeSpan y = new TimeSpan(4, 12, 31);
        Console.WriteLine(Divide(x, y)); // 0.13616 etc, i.e. 13%
    }

    public static double Divide(TimeSpan dividend, TimeSpan divisor)
    {
        return (double) dividend.Ticks / (double) divisor.Ticks;
    }
}
于 2013-03-26T13:56:07.527 回答
7

使用 DateTime.Ticks 属性。您可以通过将 DateTime Ticks 彼此相减和相除来找到百分比。这是最准确的方法。

如果您只使用时间,请使用 TimeSpan 对象而不是 DateTime 对象。

于 2013-03-26T13:52:11.577 回答
2

时间以单位测量,任何时间都可以转换为该单位的数量,然后作为任何其他数字处理。创建一个TimeSpan并采取TotalSeconds,然后做数学。

于 2013-03-26T13:52:14.047 回答