Requesting code review

Before

extension Calendar {
  static let iso8601 = Calendar(identifier: .iso8601)
}

extension Date {
  func startOfWeek(using calendar: Calendar = .iso8601) -> Date {
    calendar.date(from: calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self))!
  }
}

private func getDateRange(weeksAgo: Int) -> ClosedRange<Date> {
  let startOfThisWeek = Date().startOfWeek()
  let oneWeekDuration: Int = 7 * 24 * 60 * 60
  let oneDayDuration: Int = 24 * 60 * 60
  
  let beginningOfWeek = startOfThisWeek.advanced(by: Double(-oneWeekDuration * weeksAgo))
  // oneDayDuration makes sure the endOfWeek isn't exactly the start of the next week
  let advancedShift: Int = -oneWeekDuration * (weeksAgo - 1) - oneDayDuration
  let endOfWeek = startOfThisWeek.advanced(by: TimeInterval(advancedShift))
  let dateRange = beginningOfWeek...endOfWeek
  return dateRange
}

After

  • goal is to get rid of these untrue manual calculations, force unwrapping and such
  • looking for suggestions to improve the below
private func getDateInterval(weeksAgo: Int) -> DateInterval? {
  let calendar = Calendar.current
  
  guard
    let dateAssociatedWithWeek = calendar.date(byAdding: .weekOfYear, value: -weeksAgo, to: Date()),
    let dateInterval = calendar.dateInterval(of: .weekOfYear, for: dateAssociatedWithWeek),
    // simulation of open range; as per what API wants
    let newDateIntervalStart = calendar.date(byAdding: .day, value: 1, to: dateInterval.start)
  else { return nil }
  
  return DateInterval(start: newDateIntervalStart, end: dateInterval.end)
}

This topic was automatically closed after 166 days. New replies are no longer allowed.