2009-10-07 15 views
10

私は「文字列(一般化時)」と呼ばれる形式である日、私はこの日付が今日であるかどうかを確認する必要があり、それはX.にC#現在の文字列である日付が今日であるかどうかを確認するにはどうすればよいですか?

を行う場合は、この少し私が持っている複雑にしているのは、MSDN linked hereを参照してくださいを持っていますこの例のintは4です。intが4の場合、 'String(Generalized-Time)'形式の日付が最後の4日間であるかどうかを確認したい場合はintが7、24、30

どうすればいいですか?私は初心者であり、助けに非常に感謝しています。このよう

おかげ

答えて

32

:それは最後の4日以内にいつかどう

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date == DateTime.Today) 
    { 
     // do some stuff 
    } 

は、

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date > DateTime.Today.AddDays(-4f) && 
     dt < DateTime.Now) 
    { 
     // do some stuff 
    } 

または、拡張メソッドとして

public static bool WithinPreviousPeriod(this DateTime dt, int daysBack) 
{ 
    return dt.Date > DateTime.Today.AddDays(-daysBack)) 
      && dt < DateTime.Now; 
} 
+0

恐ろしいを、どのように私がチェックするのでしょうか?ありがとう –

+0

これは、どの地域のどのコンピュータでも問題を処理するのでしょうか、システムロケールに関連した解析ですか?私は多くの人が日付に悩まされるので頼むだけです。 – spender

+0

DateTime.Parseは「一般化された時刻」形式を処理しません。 RFC:199412161032Zの値の例を次に示します。カスタム書式文字列を渡す必要があります。 – David

6
if(DateTime.Parse(yourString).Date == DateTime.Now.Date) 
{ 
    //do something 
} 
を確認するには

今日が今日かどうかを確認する必要があります。しかし、これはエラーチェックがありません(yourStringが有効なdatetime文字列であることを前提としています)。

あなたが行うことができ、より複雑なチェックを行うために:それは最後の4日間以内であれば

DateTime date = DateTime.Parse(yourString); 
int dateOffset = 4; 

if(date.Date >= DateTime.Now.AddDays(-dateOffset).Date) 
{ 
//this date is within the range! 
} 
+0

ありがとうアラン、私はまもなくこれを試してみましょう。 –

関連する問題