public void TestCurrentDate()
        {
            var date = new DateTime(2015, 1, 30, 10, 30, 5);
            var date1 = new DateTime(2015, 1, 30);
            var date2 = new DateTime(2015, 1, 30, 23, 59, 59);
            var date3 = new DateTime(2015, 1, 31);
            var date4 = new DateTime(2015, 1, 29);
            var date5 = new DateTime(2015, 1, 1);
            var date6 = new DateTime(2015, 1, 31);
            var date7 = new DateTime(2015, 1, 26);
            var date8 = new DateTime(2015, 2, 1);
            var date9 = new DateTime(2015, 1, 29);

            Assert.AreEqual(date1, date.StartOfDay());
            Assert.AreEqual(date2, date.EndOfDay());
            Assert.AreEqual(date3, date.NextDay());
            Assert.AreEqual(date4, date.Yesterday());
            Assert.AreEqual(date5, date.GetFirstDayOfMonth());
            Assert.AreEqual(date6, date.GetLastDayOfMonth());
            Assert.AreEqual(date7, date.GetFirstDayOfWeek());
            Assert.AreEqual(date8, date.GetLastDayOfWeek());
            Assert.AreEqual(date9, date.GetWeekday(DayOfWeek.Thursday));
        }
        /// <summary>
        /// 轉換為課程行事曆
        /// </summary>
        /// <param name="SchoolYearSemesterDates"></param>
        /// <returns></returns>
        public void CreateClassBusy(
            DateTime dteStart,
            DateTime dteEnd,
            Dictionary<string,ClassEx> Classes)
        {
            ClassBusyDates = new List<ClassBusyDate>();

            if (!Classes.ContainsKey(this.ClassName))
            {
                TransferComment = "此筆資料找不到系統中對應的班級,無法進行轉換。";
                return;
            }

            int StartWeekday = dteStart.GetWeekday();
            DateTime dteStartWeekday = dteStart.StartOfWeek(DayOfWeek.Monday);
            int intWeekday = K12.Data.Int.Parse(Weekday);
            dteStartWeekday = intWeekday < StartWeekday ? dteStartWeekday = dteStartWeekday.AddDays(7).AddDays(intWeekday - 1) : dteStartWeekday = dteStartWeekday.AddDays(intWeekday - 1);

            while (dteStartWeekday <= dteEnd)
            {
                ClassBusyDate vClassBusyDate = new ClassBusyDate();

                DateTime StartDateTime = new DateTime();
                DateTime EndDateTime = new DateTime();

                DateTime.TryParse(dteStartWeekday.ToShortDateString() + " " + StartTime, out StartDateTime);
                DateTime.TryParse(dteStartWeekday.ToShortDateString() + " " + EndTime, out EndDateTime);

                vClassBusyDate.WeekDay = K12.Data.Int.Parse(Weekday);
                vClassBusyDate.Period = K12.Data.Int.Parse(Period);
                vClassBusyDate.BeginDateTime = StartDateTime;
                vClassBusyDate.EndDateTime = EndDateTime;
                vClassBusyDate.BusyDesc = Desc;
                vClassBusyDate.ClassID = K12.Data.Int.Parse(Classes[ClassName].UID);
                ClassBusyDates.Add(vClassBusyDate);

                dteStartWeekday = dteStartWeekday.AddDays(7);
            }
            if (ClassBusyDates.Count > 0)
                TransferComment = "此筆資料已產生" + ClassBusyDates.Count + "筆班級不調代時段;開始日期為" + ClassBusyDates[0].BeginDateTime.ToShortDateString() + "、結束日期為" + ClassBusyDates[ClassBusyDates.Count - 1].BeginDateTime.ToShortDateString();
            else
                TransferComment = "此筆資料未產生班級不調代時段";
        }