我从网络服务获得NSString的上午7:00和下午10:00。如何设置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);
}
所以,当我比较这些值,我比较:
开:我使用此代码块把它们转换成NSDate的2013 -07-26 12:00:00 +0000
现在:2013-07-27 03:50:30 +0000 关闭:2013-07-27 03:00:00 +0000 CLOSED-timeCompare
林不知道为什么,因为现在它实际上950pm这是前10分钟至10:00 PM。它不应该等于过去的关闭时间,即使它是UTC。
你能澄清,其中日期1和date2是从哪里来的?我没有在你的代码中看到它们。的 –
可能重复[为什么NSDateFormatter dateFromString回报为零?](http://stackoverflow.com/questions/17845994/why-does-nsdateformatter-datefromstring-return-nil) –
它不是同样的问题。请仔细阅读! – marciokoko