C#のTimeSpan.FromDays()メソッドの使い方を徹底解説
C#のTimeSpan.FromDays()メソッドは、指定した日数を表すTimeSpanオブジェクトを返す静的メソッドです。引数にはdouble型の日数を渡し、最も近いミリ秒単位まで正確に処理されます。小数点以下の値や負の値も指定できるため、柔軟な時間間隔の生成が可能です。
構文
TimeSpan.FromDays()メソッドの構文は以下のとおりです。
public static TimeSpan FromDays (double val);
パラメータ「val」には日数をdouble型で指定します。たとえば0.5を渡せば半日(12時間)を表すTimeSpanが得られます。
使用例1
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main(){
TimeSpan span1 = new TimeSpan(5, 25, 0);
TimeSpan span2 = new TimeSpan(1, 10, 0);
TimeSpan span3 = TimeSpan.FromDays(43.999999);
Console.WriteLine("TimeSpan1 = "+span1);
Console.WriteLine("TimeSpan2 = "+span2);
Console.WriteLine("TimeSpan3 = "+span3);
Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
TimeSpan1 = 05:25:00 TimeSpan2 = 01:10:00 TimeSpan3 = 43.23:59:59.9140000 Result (Comparison of span1 and span2) = 1
この例では、TimeSpan.FromDays(43.999999)によって約44日分の時間間隔が生成されています。ミリ秒単位の精度で処理されるため、結果は「43.23:59:59.9140000」と表示されます。また、TimeSpan.Compare()メソッドは2つのTimeSpanを比較し、最初の引数の方が大きければ「1」を返します。
使用例2
続いて、負の値や非常に小さい値を扱う別の例を見てみましょう。
using System;
public class Demo {
public static void Main(){
TimeSpan span1 = new TimeSpan(-3, 15, 0);
TimeSpan span2 = new TimeSpan(-2, 05, 10);
TimeSpan span3 = TimeSpan.FromDays(0.000323456);
Console.WriteLine("TimeSpan1 = "+span1);
Console.WriteLine("TimeSpan2 = "+span2);
Console.WriteLine("TimeSpan3 = "+span3);
Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
TimeSpan1 = -02:45:00 TimeSpan2 = -01:54:50 TimeSpan3 = 00:00:27.9470000 Result (Comparison of span1 and span2) = -1 Result (Comparison of span2 and span3) = -1
このように、TimeSpan.FromDays()メソッドを使えば、0.000323456日(約27.947秒)といった細かい時間間隔も簡単に生成できます。負の値を指定すれば過去方向の時間間隔も表現でき、TimeSpan.Compare()との組み合わせにより、大小関係の判定も直感的に行えます。
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数
-
RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法
2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが