0


0

年の末日が翌年の初日と同じ週にあるかどうかを判断する最も簡単な方法は何ですか?

3 Answer


7


とても簡単です。 最終日が日曜日ではない場合、翌年の初日は同じ週になるはずです。

あなたがその週をいつ始めるかによって、もちろん。


5


var lastDay = new DateTime(2009、12、31); var firstDay = new DateTime(2010、1、1);

bool isSameWeek =(int)lastDay.DayOfWeek <(int)firstDay.DayOfWeek;

'' '' '

編集:あなたはこれを尋ねませんでした、しかし私はそれが2つの日付が同じ週に入るならば計算するのがより面白いと思います。 これはあなたの質問にも当てはまりますが、より一般的な意味でも問題を解決します。 日付ごとに週の始まりを計算して取得し、DateTime値の日付部分が同じかどうかを比較します(各日付に異なる時間が渡された場合)。

///
/// Determines whether two dates fall in the same week span.
///
/// The left DateTime to compare.
/// The right DateTime to compare.
///
///
パブリックbool IsSameWeek(DateTime左、DateTime右){return AreDatePartsEqual(GetStartOfWeek(左)、GetStartOfWeek(右)); }

///
/// Gets the start of week.
///
/// The date.
///
public DateTime GetStartOfWeek(DateTime date){返却日。AddDays(-1 *(int)date.DayOfWeek); }

///
/// Compares two DateTimes using only the Date Part for equality
///
/// The left DateTime to compare.
/// The right DateTime to compare.
///
公開bool AreDatePartsEqual(左側のDateTime、右側のDateTime){return left.Day == right.Day


4


12月31日のDateTimeオブジェクトを作成するだけです。 土曜日に当たらない場合は、1月1日は同じ週にする必要があります。

DayOfWeek day = new DateTime(someYear、12、31).DayOfWeek; if(day <DayOfWeek.Saturday)// 1月1日は同じ週以内でなければなりません

編集:Grooが指摘したように、週の始まりは必ずしも日曜日ではないかもしれません。 そうでない場合は、Day = <DayOfWeek.Saturday>にするか、System.Globalization.CultureInfo.DateTimeFormat.FirstDayOfWeek 7を使用して週の最後の日を検索します。