예제 #1
0
 /// <inheritdoc/>
 /// <exception cref="ArgumentOutOfRangeException">转换后范围错误时抛出</exception>
 /// <exception cref="NullReferenceException">校历未初始化时抛出</exception>
 public TermWeek GetTermWeek(DateTime date = default)
 {
     if (_calendar == null)
     {
         throw new NullReferenceException("校历未初始化");
     }
     if (date == default)
     {
         date = DateTime.Now;
     }
     foreach (var term in _calendar)
     {
         if (date >= term.Start)
         {
             var teamweek = new TermWeek
             {
                 Semester = term.Semester,
                 Year     = term.Year,
                 Week     = ((date - term.Start).Days - 1) / 7 + 1
             };
             if (teamweek.Week >= MaxWeek[0])
             {
                 throw new ArgumentOutOfRangeException(nameof(date));
             }
             return(teamweek);
         }
     }
     return(null);
 }
예제 #2
0
 /// <inheritdoc/>
 /// <exception cref="ArgumentOutOfRangeException">当学期范围错误时抛出</exception>
 /// <exception cref="NullReferenceException">校历未初始化时抛出</exception>
 public DateTime GetTermWeekStart(TermWeek termWeek)
 {
     if (_calendar == null)
     {
         throw new NullReferenceException("校历未初始化");
     }
     if (!IsTermWeek(termWeek))
     {
         throw new ArgumentOutOfRangeException(nameof(termWeek));
     }
     foreach (var term in _calendar)
     {
         if (term.Year.Equals(termWeek.Year) && term.Semester.Equals(termWeek.Semester))
         {
             // 转换为周一 00:00:00
             if (term.Start.DayOfWeek != DayOfWeek.Monday)
             {
                 var count = term.Start.DayOfWeek - DayOfWeek.Monday;
                 if (count == -1)
                 {
                     count = 6;
                 }
                 term.Start = term.Start.AddDays(count);
             }
             return(term.Start.AddDays(7 * (termWeek.Week - 1)));
         }
     }
     return(default);
예제 #3
0
 public IActionResult GetTermWeekEnd([FromQuery] TermWeek term)
 {
     return(Ok(_service.GetTermWeekEnd(term)));
 }