Beispiel #1
0
 /// <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;
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public Holiday(string name, HolidayKind kind, DateTime date)
 {
     this.Name = name;
     this.Kind = kind;
     this.Date = date;
 }