Я получаю 7:00 и 22:00 как NSStrings из веб-сервиса. Я конвертирую их в NSDate, используя этот блок кода:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSString *openDateString = (NSString*)[timeStringsArray2 objectAtIndex:0];
NSString *closeDateString = (NSString*)[timeStringsArray2 objectAtIndex:1];
NSDate *openDate = [dateFormatter dateFromString:openDateString];
NSDate *closeDate = [dateFormatter dateFromString:closeDateString];
if ([self timeCompare:openDate until:closeDate]) {
NSLog(@"OPEN-timeCompare");
} else {
NSLog(@"CLOSED-timeCompare");
}
Это метод сравнения:
-(BOOL)timeCompare:(NSDate*)date1 until:(NSDate*)date2{
NSDate *date = [NSDate date];
NSLog(@"open:%@ now:%@ close:%@", date1, date, date2);
return ([date1 compare:date] == NSOrderedAscending && [date2 compare:date] == NSOrderedDescending);
}
Поэтому, когда я сравниваю эти значения, я сравниваю:
открыто:2013-07-26 12:00:00 +0000
сейчас:2013-07-27 03:50:30 +0000 закрыто:2013-07-27 03:00:00 +0000 время ЗАКРЫТОСравнить
Я не уверен, почему, потому что сейчас на самом деле 9:50 вечера, что составляет 10 минут до 22:00. Это не должно быть эквивалентно времени закрытия, даже если оно указано в формате UTC.