2017-08-20 17 views
-2

私は日付が嫌いです。だから私はプロジェクトを維持しているし、ちょっとナイーブな拡張メソッドを見つけましたが、99%のケースでそのトリックを行うべきです。期間を確認しています:予期しないDateTime範囲のシナリオ

public static bool IsInRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate) 
{ 
    if (startDate <= endDate) 
    { 
     return dateToCheck >= startDate && dateToCheck <= endDate; 
    } 

    return false; 
} 

私にはわかっている状況があります。 の返信文は、のスコープがtrueを返す場合、dateToCheckendDateの後にあるときtrueです。値をデバッグするために、次の画面のグラブを参照してください。

enter image description here

私は、彼らが異なるDateTimeKindを持っているかもしれないという事実を考えられたので、私は、彼らは両方のローカルだったことを確認するには、次の文を追加:

DateTime.SpecifyKind(dateToCheck, DateTimeKind.Local) 

コンソールアプリケーションでこれを再現できません。

だから、私の質問は、何だと思いますか?

答えて

2

dateToCheck変数を厳密にチェックすると、その年は1917年となり、明らかに2017(enddate年は2017)よりも小さくなります。だから、私が見る限り期待通りに働いています。

+0

ああ、問題は私に眼鏡が必要なことです:)私はそれがそれほど単純であったことをうれしく思っています。ありがとう。新鮮な目がしばしば役に立ちます。 – onefootswill

+0

@onefootswill:ええ、[いつか起こります。](http://iansommerville.com/software-engineering-book/case-studies/ariane5/) –

関連する問題