2016-03-02 3 views
0

У меня есть дата, скажем 2 March 2016, и я хочу добавить новую строку в TableView каждый раз, когда наступает новый месяц, IMO, сравнивая сохраненную дату и текущую дату, и если в дате вступления в силу, новый месяц должен прибыть в следующие 7 дней, а затем добавить строку в таблицу, но я не знаю, с чего начать, каждый может дать мне некоторый намек на проверку текущая дата в ближайшие 7 дней для если новый месяцев собирается прийтидобавьте новую строку в таблицуView каждый месяц

и если мой подход не достаточно хорош, то, пожалуйста, поправьте меня, это будет так понятно мне и полезно для меня

смотрите пример для лучшего понимания:

storedDate = 2 March 2016 
currentDate = 26 March 2016 

if CurrentDate + 1 Week == newMonth { 
//add the Row into TableView 
} 

ответ

1

Вы можете добавить расширение к NSDate, а затем сделать все виды день/месяц дополнение

Этот метод можно использовать для добавления 7 дней к текущей дате ...

func dateByAddingDays(daysToAdd: Int)-> NSDate { 
    let dateComponents = NSDateComponents() 
    dateComponents.day = daysToAdd 
    let newDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: self, options: .MatchFirst) 
    return newDate! 
} 

Этот метод добавления месяцев текущей даты

func dateByAddingMonths(monthsToAdd: Int)-> NSDate { 
    let dateComponents = NSDateComponents() 
    dateComponents.month = monthsToAdd 
    let newDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: self, options: .MatchFirst) 
    return newDate! 
} 

Затем вам нужно проверить эту дату, созданную и посмотреть, если это его другой месяц, чем тот, который хранится ..

func compareMonths(newDate:NSDate)-> Bool { 
    let today = NSDate() 
    let todayPlusSeven = today.dateByAddingDays(7) 
    return todayPlusSeven.isNextMonth(storedDate) 
} 

Используя этот метод, чтобы проверить, месяцы 2 даты одинаковы

func isNextMonth(storedDate: NSDate)-> Bool { 
    return isSameMonthAsDate(storedDate.dateByAddingMonth(1)) 
} 

func isSameMonthAsDate(compareDate: NSDate)-> Bool { 
    let comp1 = NSCalendar.currentCalendar().components([NSCalendarUnit.Year, NSCalendarUnit.Month], fromDate: self) 
    let comp2 = NSCalendar.currentCalendar().components([NSCalendarUnit.Year, NSCalendarUnit.Month], fromDate: compareDate) 
    return ((comp1.month == comp2.month) && (comp1.year == comp2.year)) 
} 

Старики, но все еще хорошие, это страница помощников Дании из github Эрики Садун. here Все они в Obj-c, но могут быть легко преобразованы в быстродействующие. Я все еще ссылаюсь на него, когда мне нужна помощь, давая математическую дату.

+0

благодарите человека, оцените ваше усилие :) –

+1

Конечно, FYI Я сделал это со своей головы, поэтому может потребоваться некоторая настройка – bolnad

Смежные вопросы