web-dev-qa-db-ja.com

C#でDateTimeを比較するには?

ユーザーに日付や時刻を知らせたくありません。

入力された日時が現在の時刻よりも短い場合、どうすれば比較できますか?

現在の日付と時刻が2010年6月17日、12:25 PMの場合、ユーザーが2010年6月17日より前の日付と12:25 PMより前の時刻を指定できないようにします。

ユーザーが入力した時間が2010年6月16日で午後12時24分である場合、私の関数のようにfalseを返します

116
Ashish Ashu

MSDN: DateTime.Compare

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 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";

Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
// The example displays the following output:
//    8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM
156
Ahmet Kakıcı

Microsoftは、演算子 '<'および '>'も実装しています。したがって、これらを使用して2つの日付を比較します。

if (date1 < DateTime.Now)
   Console.WriteLine("Less than the current time!");
281
MuSTaNG

一般的な場合DateTimesを同じKindと比較する必要があります:

if (date1.ToUniversalTime() < date2.ToUniversalTime())
    Console.WriteLine("date1 is earlier than date2");

MSDN aboutDateTime.Compareからの説明(これは><==などの演算子にも関連します):

T1とt2の関係を判別するために、Compareメソッドはt1とt2のTicksプロパティを比較しますが、Kindプロパティを無視します。 DateTimeオブジェクトを比較する前に、オブジェクトが同じタイムゾーンの時間を表していることを確認してください。

したがって、異なるタイムゾーンで表されるDateTimesを処理する場合、単純な比較では予期しない結果が生じる可能性があります。

1
AlbertK
//Time compare.
private int CompareTime(string t1, string t2)
{
    TimeSpan s1 = TimeSpan.Parse(t1);
    TimeSpan s2 = TimeSpan.Parse(t2);
    return s2.CompareTo(s1);
}
1
Dieu Phan Dinh