Попробуйте следующее на игровых площадках.До iOS 12 он работал для всех входов (начиная с 1):
вход был бы равен выходу
let input = 1
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var dateComponents = DateComponents()
dateComponents.day = input
dateComponents.hour = 0
dateComponents.minute = 0
dateComponents.second = 0
let date = Calendar.current.date(from: dateComponents)
let dateString = dateFormatter.string(from: date!)
let date2 = dateFormatter.date(from: dateString)
let output = Calendar.current.ordinality(of: .day, in: .era, for: date2!)
assert(output==input)
Но теперь в iOS 12 выход и ввод будут равны только начиная сввод 577738 ... это дата: 17 октября 1582 года, то есть через два дня после вступления в силу григорианского календаря (источник: https://en.wikipedia.org/wiki/Gregorian_calendar)
Итак, что здесь происходит? И почему это произошло?изменить в iOS 12?