/// <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); }
/// <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);
public IActionResult GetTermWeekEnd([FromQuery] TermWeek term) { return(Ok(_service.GetTermWeekEnd(term))); }