Обязательно используйте скобки в функции сравнения дат (только для ясности; логически, она должна работать просто отлично):
static bool DateIsBetween(NSDate *beginDate, NSDate *date, NSDate *endDate) {
return (([date timeIntervalSince1970] > [beginDate timeIntervalSince1970]) && ([date timeIntervalSince1970] < [endDate timeIntervalSince1970]));
}
Для таких случаев хорошей идеей будет создатьКатегория для класса NSDate и написать методjective-c.
В остальном я попробовал следующий код, и он работал для меня:
NSDate * now = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone localTimeZone]];
NSDateComponents *genericTimeComponents = [gregorian components:(NSWeekdayCalendarUnit |NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSEraCalendarUnit)
fromDate:now];
[genericTimeComponents setHour:5];
[genericTimeComponents setMinute:0];
// Quick Check
NSLog(@"GTC=%@", genericTimeComponents);