Я получаю 7:00 и 10:00 как NSStrings из веб-службы. Я конвертировать их в NSDate, используя этот блок кода:Как установить дату для времени 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 ЗАКРЫТО-timeCompare
Я не уверен, почему, потому что сейчас его фактически 950 вечера, что за 10 минут до 10:00 вечера. Это не должно быть эквивалентно времени, близкому к времени, даже если оно находится в UTC.
Не могли бы вы уточнить, откуда взялись дата1 и дата2? Я не вижу их в вашем коде. –
Возможный дубликат [Почему NSDateFormatter dateFromString возвращает nil?] (Http://stackoverflow.com/questions/17845994/why-does-nsdateformatter-datefromstring-return-nil) –
Не тот же вопрос. Пожалуйста, внимательно прочитайте! – marciokoko