У меня есть компонент даты сказать birthdayComponent (он имеет месяц и день в нем), и я хочу проверить, находится ли он между другими компонентами .. say (beginDaYComponent и endDayComponent).Как проверить, существует ли день между двумя другими днями в iOS ...?
Я хочу проверить, находится ли мой компонент дня рождения между этими двумя датами ..? Как я могу достичь этого, так как я также должен учитывать граничные случаи, скажем 29 февраля, и у меня будут значения endDayCompnents как 3 для месяца и 1 для дня. Вы можете ознакомиться с приведенным ниже кодом для получения дополнительной информации.
NSDateFormatter *dateFormat = [NSDateFormatter new];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
NSDateComponents *beginDayComponent = [[NSDateComponents alloc] init];
NSDateComponents *endDayComponent = [[NSDateComponents alloc] init];
NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSMutableArray* birthdayFitlerArray = [NSMutableArray new];
for (NSString* dateString in birthdaysArray)
{
NSDate* birthdayDate = [dateFormat dateFromString:dateString];
dayComponent.day = -1;
NSDate* beginDate = [theCalendar dateByAddingComponents:dayComponent toDate:currentLeg.date options:0];
dayComponent.day = 1;
NSDate* endDate = [theCalendar dateByAddingComponents:dayComponent toDate:currentLeg.date options:0];
beginDayComponent = [theCalendar components:(NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:beginDate];
endDayComponent = [theCalendar components:(NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:endDate];
NSDateComponents* birthdayComponents = [theCalendar components:(NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:birthdayDate];
}
UPDATE:
Я хочу исключить из компонент год для даты.
быстро прибегая к помощи: 'сравнить NSDate без year' и [это придумал] (http://stackoverflow.com/a/6252686/1387438) –
@MarekR: близко, но не то же самое. то есть без временной части. – vikingosegundo