両方のデータ型がである場合、YからXのパーセンテージを計算する効率的な方法はありますTimeSpan
か?
たとえば、基本的な質問は、の1:00:00
50%です2:00:00
。何パーセントかを計算する効果的な方法は何でしょう00:34:23
か4:12:31
?
両方のデータ型がである場合、YからXのパーセンテージを計算する効率的な方法はあります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ティックを互いに減算および除算することにより、パーセンテージを見つけることができます。これが最も正確な方法です。
Timeのみを使用している場合は、DateTimeオブジェクトではなくTimeSpanオブジェクトを使用してください。
時間は単位で測定され、いつでもその単位の数に変換して、他の数として処理することができます。を作成しTimeSpan
て取得TotalSeconds
し、計算を行います。