我從網絡服務獲得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