Я хотел бы указать, что вопрос следует отредактировать, чтобы указать, что вы хотите знать, как перечислить месяцы, поскольку вычисление целого числа, обозначающего включающее количество месяцев между двумя датами, может быть совершенно другой задачей. И для этого ответ уборщика уже должен считаться более чем адекватным.
Я постараюсь дать решение в ответ на комментарий, в котором вы уточняете, что вам нужен список месяцев.
import UIKit
func makeDate(year: Int, month: Int, day: Int) -> Date {
let calendar = Calendar(identifier: .gregorian)
let components = DateComponents(year: year, month: month, day: day) //, hour: hr, minute: min, second: sec)
return calendar.date(from: components)!
}
let date1 = makeDate(year: 2016, month: 10, day: 23) // 23 OCT 2016
let date2 = makeDate(year: 2020, month: 7, day: 10) // 10 JULY 2020
func printMonths(date1: Date, date2: Date) {
guard date1 < date2 else {return}
let month1 = Calendar.current.component(.month, from: date1)
let month2 = Calendar.current.component(.month, from: date2)
let year1 = Calendar.current.component(.year, from: date1)
let year2 = Calendar.current.component(.year, from: date2)
if year1 == year2 {
for month in month1...month2 {
print(DateFormatter().monthSymbols[month - 1])
}
} else {
for year in year1...year2 {
print(year)
switch year {
case year1:
for month in month1...12 {
print(" \(DateFormatter().monthSymbols[month - 1])")
}
case year2:
for month in 1...month2 {
print(" \(DateFormatter().monthSymbols[month - 1])")
}
default:
for month in 1...12 {
print(" \(DateFormatter().monthSymbols[month - 1])")
}
}
print()
}
}
}
printMonths(date1: date1, date2: date2)
Эта функция будет печатать названия месяцев в порядке от даты1 до даты2, печатая годы для месяцев, если 2 даты имеют разные годы.
Ее можно легко изменить, чтобы напечатать общее количество месяцев просто используя счетчик каждый раз, когда печатается название месяца, если вы тоже этого хотели.
Вывод из примеров дат:
2016
October
November
December
2017
January
February
March
April
May
June
July
August
September
October
November
December
2018
January
February
March
April
May
June
July
August
September
October
November
December
2019
January
February
March
April
May
June
July
August
September
October
November
December
2020
January
February
March
April
May
June
July