Я думаю, что более ясным решением было бы использование объектов NSDate с присутствием только часовых / минутных компонентов.
По сути, где-то в вашем приложении вам нужно хранить время открытия / закрытия магазина как таковое:
NSCalendar *calendar = [[NSCalendar alloc]
initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *openTime = [[NSDateComponents alloc] init];
[openTime setHour: 12];
[openTime setMinute: 30];
NSDate *openDate = [calendar dateFromComponents: openTime];
[calendar release];
И если вам нужно посмотреть, находится ли текущее время между двумя такими объектами NSDate, у вас может быть такой метод:
- (BOOL)currentTimeIsInBetween: (NSDate *)date1 andDate: (NSDate *)date2 {
NSCalendar *calendar = [[NSCalendar alloc]
initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *currentComponents = [calendar components:
(NSMinuteCalendarUnit | NSHourCalendarUnit)
fromDate: [NSDate date]];
NSDate *currentAdjusted = [calendar dateFromComponents: currentComponents];
[calendar release];
if ([currentAdjusted compare: date1] == NSOrderedAscending)
return NO;
if ([currentAdjusted compare: date2] == NSOrderedDescending)
return NO;
return YES;
}
РЕДАКТИРОВАТЬ: похоже, пользователь rbrown был немного быстрее, чем я, мы предлагаем тот же подход.