当两种数据类型都是TimeSpan
时,是否有一种有效的方法来计算Y中X的百分比?
例如,一个基本问题是1:00:00
是2:00:00
的50%。
计算00:34:23
的{{1}}百分比的有效方法是什么?
答案 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
,然后进行数学运算。