/// <summary> /// 祝日 /// </summary> /// <param name="date">日付</param> /// <param name="kind">種類</param> /// <param name="name">名称</param> /// <param name="definition">祝日の定義</param> public Holiday(DateTime date, HolidayKind kind, string name, string definition) { Date = date; Kind = kind; Name = name; Definition = definition; }
public Holiday(string name, HolidayKind kind, int year, int month, int weekNumber, DayOfWeek dayOfWeek) { this.Name = name; this.Kind = kind; if (weekNumber < 1) { throw new ArgumentException("weekNumber は 1以上を指定してください"); } DateTime dt = new DateTime(year, month, 1); //月初日と月末日 var firstDay = dt.FirstDayOfMonth(); var lastDay = dt.LastDayOfMonth(); var week = Math.Max(1, weekNumber); var day = 0; do { /** * 日付の計算(日曜=0, 土曜=6の時の計算式) * 月初日の曜日と、引数の曜日の大小関係で計算方法が変わります。 * 日付が末日を超える限り計算を続けます。 */ if (dayOfWeek >= firstDay.DayOfWeek) { day = 7 * (week - 1) + ((int)dayOfWeek - (int)firstDay.DayOfWeek) + 1; } else { day = 7 * week + ((int)dayOfWeek - (int)firstDay.DayOfWeek) + 1; } week--; } while (day > lastDay.Day); this.Date = new DateTime(year, month, day); }
public Holiday(string name, HolidayKind kind, DateTime date) { this.Name = name; this.Kind = kind; this.Date = date; }