我从 Web 服务获得上午 7:00 和晚上 10: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 关闭时间比较
我不知道为什么,因为现在实际上是晚上 950 点,即晚上 10:00 前 10 分钟。它不应该等于过去关闭时间的时间,即使它是 UTC。