C# で指定した曜日の日を取得
C# (.NET) で曜日を扱うには、 DateTime と DayOfWeek を使用します。
サンプルとして、引数で指定した曜日で、指定日から最も近い未来日 (当日を含む) を取得するソースを以下に示します。このソースでは、 DayOfWeek の値を int に変換して、曜日の計算を行っています。
/// <summary> /// 引数で指定した曜日で、指定日から最も近い未来日 (当日を含む) を返す /// </summary> /// <param name="day">対象の日</param> /// <param name="wantDayOfWeek">希望曜日</param> /// <returns>最も近い未来日</returns> /// <remarks>引数で指定した日と曜日が同一の場合、そのままの日が返る</remarks> public static DateTime GetNearestDayOfWeek(DateTime day, DayOfWeek wantDayOfWeek) { DayOfWeek dayOfWeek = day.DayOfWeek; if (dayOfWeek == wantDayOfWeek) { return day; } else { return day.AddDays( ((int)(DayOfWeek.Saturday - day.DayOfWeek + wantDayOfWeek) % 7) + 1); } }
実行例を以下に示します。戻り値 monday には、今日を含む最も近い未来日の日付 (引数で指定した月曜日) が返されます。
// 今日から最も近い月曜日を取得する
DateTime monday = GetNearestDayOfWeek(DateTime.Today, DayOfWeek.Monday);