2009-09-11 13 views
11

私は日の指定された時間が経過したかどうかを知りたいと思っています。私は自分のやり方を気に入っていません:C#今日の2つの時間を比較する最善の方法

private static readonly TimeSpan _whenTimeIsOver = new TimeSpan(16,25,00); 

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay.Subtract(_whenTimeIsOver).Ticks > 0; 
} 

どうやってですか?

答えて

24

についてどのように:

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay > _whenTimeIsOver; 
} 

演算子のオーバーロードは、あなたがまた代わりの方法のプロパティすることを検討することをお勧めします:)日付と時刻の仕事のために非常に有用です。

それは私が

DateTime.CurrentTime 

または

TimeSpan.CurrentTime 

は(DateTime.Todayがあります同じように)DateTime.Now.TimeOfDayを回避することがないことを、わずか残念だが、残念ながら、ない...

intの拡張メソッドをMiscUtilに設定すると、_whenTimeIsOverの初期化がもっとうまくいきます使用:

private static readonly TimeSpan _whenTimeIsOver = 16.Hours() + 25.Minutes(); 

それはすべての人の好みにないのですが、私はそれが好き...

+0

私はDateTimeとTimeSpanオブジェクトを比較できないと思っていました。私は初心者が好きです。 – Toto

+2

@Duaner:あなたは 'DateTime'と' TimeSpan'を比較していません - あなたは2つの 'TimeSpans'を比較しています。 'TimeOfDay'プロパティは' TimeSpan'を返します。 –

14
if (DateTime.Now.TimeOfDay > _whenTimeIsOver) 
    .... 
+0

+1最初のもののために。 – Vadim

+4

何とかJon –

+0

よりも速いです。私は高速でしたが、私の最初の答えは小さなエラーが含まれていました:) –

関連する問題