ユーザーに日付や時刻を知らせたくありません。
入力された日時が現在の時刻よりも短い場合、どうすれば比較できますか?
現在の日付と時刻が2010年6月17日、12:25 PMの場合、ユーザーが2010年6月17日より前の日付と12:25 PMより前の時刻を指定できないようにします。
ユーザーが入力した時間が2010年6月16日で午後12時24分である場合、私の関数のようにfalseを返します
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
Microsoftは、演算子 '<'および '>'も実装しています。したがって、これらを使用して2つの日付を比較します。
if (date1 < DateTime.Now)
Console.WriteLine("Less than the current time!");
一般的な場合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
を処理する場合、単純な比較では予期しない結果が生じる可能性があります。
//Time compare.
private int CompareTime(string t1, string t2)
{
TimeSpan s1 = TimeSpan.Parse(t1);
TimeSpan s2 = TimeSpan.Parse(t2);
return s2.CompareTo(s1);
}