生きることは簡単です

日々細々と生きています

【C#】日付(DateTime)が年始から数えて何週目かを取得する

仕事で必要になって作ったメソッド。ちなみに日曜始まりで計算します。

public static int GetWeekCount(DateTime dt)
{
    DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
    Calendar cal = dfi.Calendar;
    return cal.GetWeekOfYear(dt, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
}

DateTime型を引数で受け取り、それをGetWeekOfYearメソッドに横流すると、戻り値で週の数が返ってくるというとても単純な仕組み。
ただまあ、年始からの週数を取りたいことってあんまりない気がしていて、実用性がイマイチかな...と思ったのでオマケでもう一本。

特定の日付が2つ渡すと、その期間を週数で返すというメソッド。
日数を7で割った後、切り上げを行っています。経過した週数であれば切り捨てですが、その日付が何週目に属しているのかを知るのであれば切り上げですかね。

public static int GetPeriodWeekCount(DateTime startDt, DateTime endDt)
{
     // startDtがendDtより大きい場合は不正な値なので一律1を返す
     if (startDt > endDt) return 1;
     var weekNum = (endDt - startDt).TotalDays / 7;
     return weekNum == 0 ? 1 : Math.Ceiling(weekNum);
}