2011-07-07 17 views
2

目標 - より新しいDateTimeを見つけます。DateTimeオブジェクトを比較する

は、私はこのコードでこれを把握することができます:

DateTime dt1 = new DateTime(...); //let's say it was created on 1/1/2000 

DateTime dt2 = new DateTime(...); //let's say it was create on 1/1/2011 

if (dt2.ToBinary() > dt1.ToBinary()) { 
print dt2 is newer than dt1 } 

私は単にバイナリにDateTimeオブジェクトに変換することができ、その後、大きい方が、より最近のものであることを推測?

おかげで、あなたは通常よりも良い行うことができます ケビン

答えて

8
if (dt2 > dt1) { 
print dt2 is newer than dt1 } 

は十分なはずです。

4

:トリッキーなビットを考慮にタイムゾーンを取っている

if (dt2 > dt1) 

...あなたが潜在的に

if (dt2.ToUniversalTime() > dt1.ToUniversalTime()) 

を使用することができますローカルの時刻がシステムのタイムゾーン内にローカルであることがわかっている場合に限ります。 .NETで

日付と時刻は混乱のビットです:(日時は比較演算子をオーバーロードとして

3

いいえ、あなたがすることはできません。ToBinary()内部を返します。また、タイムゾーン情報を格納形式

代わりに、あなたが直接DateTime Sを比較することができます。

if (dt2 > dt1) 

DateTimeは、比較演算子に過負荷を与えます。

Ticksプロパティを比較できますが、気にする必要はありません。

0

DateTimeオブジェクト自体同等であるので、

if (dt1>dt2) 
    Console.WriteLine('dt1 is newer'); 
else if (dt1>dt2) 
    Console.WriteLine('dt2 is newer'); 
else // they are equal 
    Console.WriteLine('dt1 and dt2 are the same'); 

はあまりにも動作します。さらにDateTime
IComparable<DateTime>インターフェイスを実装しているので、あなたが行うことができます。

int result = dt1.CompareTo(dt2); 
if (result > 0) 
    Console.WriteLine('dt1 is newer'); 
else if (result < 0) 
    Console.WriteLine('dt2 is newer'); 
else // result = 0 
    Console.WriteLine('dt1 and dt2 are the same'); 

EDIT:これは

1

あなたが使用することができます...タイムゾーン、現地時間、などを無視しDatetime.Compare

int iDiff = DateTime.Compare(new DateTime(2011, 02, 28), new DateTime(2011, 01, 30)); 

-1 = Fisrtの日付が秒未満です
0 =最初の日付が2番目の日付と等しい
1 =最初の日付が秒より大きい

関連する問題