当两种数据类型都是 时,是否有一种有效的方法来计算 X 与 Y 的百分比TimeSpan
?
例如,一个基本问题1:00:00
是 50% 的2:00:00
. 00:34:23
计算百分比的有效方法是什么4:12:31
?
当两种数据类型都是 时,是否有一种有效的方法来计算 X 与 Y 的百分比TimeSpan
?
例如,一个基本问题1:00:00
是 50% 的2:00:00
. 00:34:23
计算百分比的有效方法是什么4:12:31
?
编辑:根据评论,类型实际上是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;
}
}
使用 DateTime.Ticks 属性。您可以通过将 DateTime Ticks 彼此相减和相除来找到百分比。这是最准确的方法。
如果您只使用时间,请使用 TimeSpan 对象而不是 DateTime 对象。
时间以单位测量,任何时间都可以转换为该单位的数量,然后作为任何其他数字处理。创建一个TimeSpan
并采取TotalSeconds
,然后做数学。