Рассчитать номер текущей недели между диапазонами дат в ios - PullRequest
0 голосов
/ 27 марта 2020

Я знаю, как рассчитать общее количество недель между двумя диапазонами дат.

func calculateNoOfWeeksWith(startDate: Date, endDate: Date) -> Int {
    let calendar = Calendar.current

    let dateFrom = calendar.startOfDay(for: startDate)
    let dateTo = calendar.startOfDay(for: endDate)

    let components = calendar.dateComponents([.weekOfYear], from: dateFrom, to: dateTo)

    return components.weekOfYear ?? 0
 }

Я также знаю, как рассчитать номер текущей недели (сегодня) года.

let calendar = Calendar.current
let weekOfYear = calendar.component(.weekOfYear, from: Date.init(timeIntervalSinceNow: 0))
print(weekOfYear)

Но как рассчитать номер текущей недели (сегодня) между двумя диапазонами дат вместо года?

Я имею в виду, если я выберу даты между 2020-03-27 и 2020- 09-07 вернется 25 недель. Но если я хочу знать, какой будет номер текущей недели, то как мы это сделаем?

1 Ответ

0 голосов
/ 27 марта 2020

Итак, согласно предложению @JoakimDanielson, ответ должен выглядеть следующим образом:

func calculateCurrentWeekNumberWith(startDate: Date, endDate: Date = Date(timeIntervalSinceNow: 0)) -> Int {
    var calendar = Calendar.current
    calendar.firstWeekday = 2 //Monday
    calendar.locale = Locale.current  //Locale(identifier: "en_US_POSIX")

    let weekNumberForStartDate = calendar.component(.weekOfYear, from: startDate)
    let weekNumberForEndDate = calendar.component(.weekOfYear, from: endDate)

   let currentWeekNum = weekNumberForEndDate - weekNumberForStartDate

   return currentWeekNum
   //return currentWeekNum+1 // Why added 1, because the difference between 2020-03-16 & 20-03-27 is 1 but we know it should be 2nd week. Also if you want the first week to be 1 rather than 0
}
...