Мне нужно получить количество дней между двумя датами, которые я получаю, но если я нахожу , например: 2016-12-10 и 2017-01-10, там будет быть отрицательным числом дней. Это происходит только в том случае, если это новый год между этими двумя датами.Получите количество дней между двумя NSDates при пересечении нового года
//Get the number of days between two NSDates
func daysBetween(date: NSDate) -> Int {
let calendar: NSCalendar = NSCalendar.currentCalendar()
let date1 = calendar.startOfDayForDate(self)
let date2 = calendar.startOfDayForDate(date)
let components = calendar.components(.Day, fromDate: date1, toDate: date2, options: [])
return components.day
}
//Using the function
let daysBetween = fromDate.daysBetween(toDate)
//Printing -334 if new year is between fromDate and toDate
print(daysBetween)
Как я могу изменить функцию daysBetween (date: NSDate), чтобы предотвратить это?
Редактировать: Пожалуйста, не обращайте внимание на то, почему он печатает exacctly -334. Это только потому, что fromDate и toDate - разные дни месяца. Проблема, которую нужно решить, - это то, почему ответ отрицательный, а не 31, как и должно быть.
Решено: Оказалось, что многие из вас думали. FromDate больше, чем toDate и вызывает отрицательное число. Глупая ошибка. Thx ребята!
Я не могу воспроизвести проблему. С вашими входными данными результат равен «31». –
Можете ли вы предоставить (небольшой) * автономный * пример, демонстрирующий проблему? –
Я бы посоветовал подтвердить, что две даты - это то, что вы думаете. Например, если вместо «2016-12-10», если первая дата была «2017-12-10», вы получите свой «-334». – Rob