Похоже, вы добавили много расширений на Date
, которые там не принадлежат. Date
- это момент времени. Чтобы говорить о «днях», вы должны вызывать методы Calendar
и DateComponents
. Эта функция в любом случае не совсем корректна. Он может быть выключен на один день в зависимости от изменений летнего времени. Вы не можете предположить, что день длится 24 часа; некоторые - 25 часов, а некоторые - 23 часа.
Код, который вы хотели, был:
let calendar = Calendar(identifier: .gregorian)
calendar.dateComponents([.day], from: d1, to: d2).day!
Вероятно, где-то в ваших расширениях у вас есть Calendar.current
. Это означает «текущий пользовательский календарь». Нет никакого способа сказать системе «даже когда я явно запрашиваю текущий пользовательский календарь, пожалуйста, дайте мне что-нибудь еще». Найдите код, который использует Calendar.current
и замените его на Calendar(identifier: .gregorian)
, если вы это имеете в виду.