NSdate диапазон всего удаления выходных Swift
Я делаю приложение бронирования праздников / выходных дней. У меня есть расширение, которое определяет общее количество дней между двумя NSDates, оно прекрасно работает, но я не знаю, как убрать все выходные дни из общего числа.
Можете ли вы помочь, пожалуйста?
extension NSDate {
func numberOfDaysUntilDateTime(toDateTime: NSDate, inTimeZone timeZone: NSTimeZone? = nil) -> Int {
let calendar = NSCalendar.currentCalendar()
if let timeZone = timeZone {
calendar.timeZone = timeZone
}
var startDate: NSDate?, endDate: NSDate?
calendar.rangeOfUnit(.Day, startDate: &startDate, interval: nil, forDate: self)
calendar.rangeOfUnit(.Day, startDate: &endDate, interval: nil, forDate: toDateTime)
let difference = calendar.components(.Day, fromDate: startDate!, toDate: endDate!, options: [])
return difference.day
}
}
1 ответ
Решение
Я нашел это. Вычисляет количество выходных дней между 2 NSDates
func numberOfWeekendsBeetweenDates(startDate startDate:NSDate,endDate:NSDate)->Int{
var count = 0
let oneDay = NSDateComponents()
oneDay.day = 1;
// Using a Gregorian calendar.
let calendar = NSCalendar.currentCalendar()
var currentDate = startDate;
// Iterate from fromDate until toDate
while (currentDate.compare(endDate) != .OrderedDescending) {
let dateComponents = calendar.components(.Weekday, fromDate: currentDate)
if (dateComponents.weekday == 1 || dateComponents.weekday == 7 ) {
count++;
}
// "Increment" currentDate by one day.
currentDate = calendar.dateByAddingComponents(oneDay, toDate: currentDate, options: [])!
}
return count
}