명확한 해결책은 시간당/분 구성 요소가있는 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;
}
편집 : 사용자가 나를 좋아하는 것 같아요.
애플이이 간단한 문제를 그렇게 어렵게 만드는 것은 다소 우스꽝 스럽다. – zaph
나는 반대로 주장 할 것이다. Apple은 어려운 문제를 간단하게 만듭니다. 내 대답에 링크 된 답변을 확인하십시오. 날짜는 매우 복잡합니다. 특히 어떤 종류의 현지화 작업을 원할 경우 특히 그렇습니다. 위의 코드를 자체 메서드로 래핑하여 코드가 너무 추해 보이지 않게하는 것도 쉽습니다. – rbrown
NSOrderedAscending과 NSOrderedDescending을 뒤집어서는 안됩니까? 실제로 열려있는 시간 내에 있지 않지만 그 반대의 경우에는 코드가 긍정적으로 나타납니다. –