2011-04-05 13 views
1

私の頭がなぜ今回転しているのかよくわかりません。確かに長い一日ですが、私はこのことについて助けが必要です。日付ではない日付と文字列を比較する最も良い方法は何ですか?

私はDateTime変数とString変数を持っています。私は最終的に両者を平等のために比較する必要があります。 DateTimeはnullまたはDateTimeのいずれかになります。文字列は、文字列(mm/dd/yy)で表される日付または単一の単語のいずれかです。 2つの変数が等しいことを示す簡単なブール値が必要ですが、実際にはこれで苦労しています。

現時点では、date2が初期化されていないというエラーが表示されます。提案は非常に高く評価されています。ありがとう!ここで

は私がFYI

string date1= "12/31/2010"; 
DateTime? date2= new DateTime(1990, 6, 1); 

bool datesMatch = false; 

DateTime outDate1; 
DateTime.TryParse(date1, out outDate1); 

DateTime outDate2; 

if (date2.HasValue) 
{ 
    DateTime.TryParse(date2.Value.ToShortDateString(), out outDate2); 
} 

if (outDate1== outDate2) 
{ 
    datesMatch = true; 
} 

if (!datesMatch) 
{ 
    // do stuff here; 
} 

...で起動するものです - 日付1と日付2だけのdevの目的のために先頭に初期化されます。実際の値はデータベースから取得されます。


EDIT#1 - これは私の最新です。 outDate2が初期化されていないことに起因するエラーを取り除くにはどうすればよいですか?私はそこに任意の日付を置き、エラーをクリアします。それは間違っていると感じるだけです。

string date1 = "12/31/2010"; 
    DateTime? date2 = new DateTime(1990, 6, 1); 

    bool datesMatch = false; 

    DateTime outDate1; 
    bool successDate1 = DateTime.TryParse(date1, out outDate1); 

    DateTime outDate2; 
    bool successDate2 = false; 

    if (date2.HasValue) 
    { 
     successDate2 = DateTime.TryParse(date2.Value.ToShortDateString(), out outDate2); 
    } 

    if (successDate1 && successDate2) 
    { 
     if (outDate1 == outDate2) 
     { 
      datesMatch = true; 
     } 
    } 

    if (!datesMatch) 
    { 
     // do stuff here; 
    } 
+2

なぜ、「DateTime.TryParse」の戻り値を無視していますか?それが成功したかどうかあなたはどのように分かりますか? –

+0

'date2'をヌル可能型として宣言した理由は何ですか? –

+0

date2はdb内でnull可能な型として定義されており、実際にはnullに戻ることがあります。私はすでにデータベースにチェックした。 – DenaliHardtail

答えて

6

DateTime.TryParseは、結果が成功したかどうかを知るためにブール値を返します。その戻り値を使用します。

string date1= "12/31/2010"; 
DateTime? date2= new DateTime(1990, 6, 1); 

bool datesMatch = false; 

DateTime outDate1; 
bool success = DateTime.TryParse(date1, out outDate1); 

DateTime outDate2; 

if (success) 
{ 
    // etc... 
} 
関連する問題