我对这段代码感到困惑:
for (int i = 0; i < [content count]; i++) {
NSString *dateString = [self replaceCharacters:[[[content objectAtIndex:i] objectForKey:@"date"] objectForKey:@"text"]];
NSLog(@"\n\n%i",[[dateFormatter stringFromDate:[originalDate dateFromString:[[[content objectAtIndex:i] objectForKey:@"date"] objectForKey:@"text"]]] intValue]);
if ([[dateFormatter stringFromDate:[originalDate dateFromString:dateString]] intValue] >= [todayString intValue]) {
[tempContent addObject:[content objectAtIndex:i]];
}
}
我会解释:
我需要检查内容中每个对象的日期是否高于或等于今天的日期。如果是这样,它将被添加到tempContent。但tempContent计数等于内容计数。什么都没有排序......
有没有人看到解决方案?!
谢谢, mavrick3。
答案 0 :(得分:1)
为什么不使用NSDate
s -compare:
方法?它会返回常量NSOrderedDescending
,如果第一个日期更晚,NSOrderedAscending
如果它更早,你会在它返回NSOrderedSame
时发现它。
例如:
if ([originalDate compare:todayDate] == NSOrderedDescending) {
[tempContent addObject:[content objectAtIndex:i]];
}
答案 1 :(得分:0)
你想使用NSDateComponents,而不是所有的stringFromDate东西。
有关详细信息,请参阅this answer。
但基本上你会想要这样的东西:
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* origComponents = [calendar components:flags fromDate:originalDate];
NSDate* origDateOnly = [calendar dateFromComponents:origComponents];
for (int i = 0; i < [content count]; i++)
{
NSDate *date = [[content objectAtIndex:i] objectForKey:@"date"];
NSDateComponents* components = [calendar components:flags fromDate:date];
NSDate* dateOnly = [calendar dateFromComponents:components];
if ([origDateOnly compare:dateOnly] == (NSOrderedSame || NSOrderedAscending))
{
[tempContent addObject:[content objectAtIndex:i]];
}
}
答案 2 :(得分:0)
看看Erica Sadun的NSDate-Extensions。它有许多有用的方法,如isEqualToDateIgnoringTime:
和isLaterThanDate:
这有助于我解决与你类似的问题。