找到一定时间百分比的有效方法

时间:2013-03-26 13:49:18

标签: c#

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

例如,一个基本问题是1:00:002:00:00的50%。 计算00:34:23的{​​{1}}百分比的有效方法是什么?

3 个答案:

答案 0 :(得分:11)

编辑:根据评论,类型确实是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;
    }
}

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

时间以单位计算,任何时间都可以转换为该单位的数量,然后作为任何其他数字处理。创建一个TimeSpan然后选择TotalSeconds,然后进行数学运算。