0

DateDiff時間部分の引数を含め、SQLメソッドのように日付を比較できるC#のメソッドはありますか?

たとえば、2つの日付があります。

DateTime early = "2013.02.01 07:31:15";
DateTime soon = "2013.02.01 23:48:35";

if (Compare(early, soon, DAY) == true)
{
   //I want to be here
}

これらの2つのオブジェクトが年、月、日で等しいという情報を取得したいと思います。残りは私にとって重要ではありません。

4

7 に答える 7

5

あなたが使用することができますDateTime.Date

if(early.Date == soon.Date)
{
} 

時間の正確さが必要な場合:

if(early.Date == soon.Date && early.Hour == soon.Hour)
{
} 

ただし、このソリューションでは、 "12/03/1857 23:59"!="13/03/185700:00"になります。それらの「距離」を確認したい場合:

if(early.Substract(soon).Duration() <= TimeSpan.FromHours(1))
{
}

.Duration()期間の「絶対」値を取得します(early.Substract(soon)「正」または「負」になる可能性があるため)。

于 2013-02-01T15:29:04.327 に答える
4

Dateのプロパティを使用してDateTime、日付部分を取得することができます。

あなたの場合、あなたは以下を使うことができます:

if (early.Date == soon.Date)
{
    ....
}
于 2013-02-01T15:28:43.607 に答える
1

DateTime.Subtractメソッドを使用して、違いを見つけることができます。

System.TimeSpan diff1 = date2.Subtract(date1);

編集

等式を比較したい場合は、単純に等式演算子==を使用できます。

if(date1 == date2)
{
}
于 2013-02-01T15:27:45.983 に答える
1

2つの日付をどのように比較しているかを明確にしたい場合は、少し冗長であることには何の問題もないと思います。

public static bool YearMonthDayHourDateCompare(DateTime one, DateTime two)
{
    return (one.Year  == two.Year  &&
            one.Month == two.Month &&
            one.Day   == two.Day   &&
            one.Hour  == two.Hour  && 
            ...);
}

比較を説明する方法でメソッドに名前を付けます。さらに良いことに、これは拡張メソッドである可能性があります。

public static bool CompareDateAndHour(this DateTime one, DateTime two)
{
    return (one.Date == two.Date &&
            one.Hour == two.Hour && 
            ...);
}

これは次のように使用できます:

bool datesAreEqual = soon.CompareDateAndHour(two);
于 2013-02-01T15:30:58.863 に答える
1

同じ日かどうかを知りたい場合は、日付差分を使用できません...

このコードを試してください:

if(new TimeSpan(early.Ticks).TotalDays() == new TimeSpan(soon.Ticks).TotalDays()){
     // Equal
}
于 2013-02-01T15:31:30.480 に答える
0
var diff=soon-early;
diff.TotalHours or diff.TotalMinutes etc...
于 2013-02-01T15:29:18.570 に答える
0

2つの日付を時間の精度と比較するには、次のようなものを使用します。

bool match = (soon - early).TotalHours < *your diff limit*;
于 2013-02-01T15:31:27.943 に答える