2011-07-06 3 views
39

私は2つの日付があります。 1つの日付が入力され、その他の日付はDateTime.Nowです。私はmm/dd/yyyy形式でそれらを持っている、それはまた、m/d/yy形式もすることができます。どちらの日付もnullableです。つまり、nullを入力として渡すことができるので、データ型はDateTime?です。今度は、2つの日付をmm/dd/yyyyまたはm/d/yy形式とだけ比較したいと思います。Cで日付を比較する方法#

答えて

63

DateTime変数に日付がある場合、にはの形式がありません。

Dateプロパティを使用して、時刻部分を深夜に設定したDateTime値を返すことができます。だから、あなたが持っている場合:

DateTime dt1 = DateTime.Parse("07/12/2011"); 
DateTime dt2 = DateTime.Now; 

if(dt1.Date > dt2.Date) 
{ 
    //It's a later date 
} 
else 
{ 
    //It's an earlier or equal date 
} 
+9

時間、分などを必要としない場合は、「DateTime.Now.Date」よりも「DateTime.Today」を使用することをお勧めします。 –

+0

@Piotr - 良い点 - 別の部分として時間/分/秒にアクセスする必要がない場合作品。 –

+1

@Damien_The_Unbelieverこれはどの日付形式でも動作しますか? 'yyyy/MM/dd'についてはどうですか? – Arbaaz

7

まず、DateTimeオブジェクトがフォーマットされていないことを理解しています。彼らはちょうど年、月、日、時、分、秒などを数値として保存し、何らかの形で文字列として表現したいときにフォーマットが行われます。フォーマットしないでDateTimeオブジェクトを比較することができます。その後、

DateTime inputDate; 
if(!DateTime.TryParse(inputString, out inputDate)) 
    throw new ArgumentException("Input string not in the correct format."); 

if(inputDate.Date == DateTime.Now.Date) { 
    // Same date! 
} 
19

あなたはDateTime変数に日付を持っている場合は、その:

DateTime.Nowで入力日付を比較するには、あなたが最初の日付に入力を解析し、ちょうど年/月/日の部分を比較する必要がありますa DateTimeオブジェクトであり、フォーマットを含まない。書式設定された日付はと表示され、DateTime.ToStringメソッドを呼び出してその中に書式を指定します。

を使用すると、2つのDateTime変数を持っていると言う、あなたは比較ですのための比較方法を使用することができます、

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); 
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0); 
int result = DateTime.Compare(date1, date2); 
string relationship; 

if (result < 0) 
    relationship = "is earlier than"; 
else if (result == 0) 
    relationship = "is the same time as";   
else 
    relationship = "is later than"; 

コードmsdnから取られたスニペット。