我有以下格式的两个日期:
2012年8月6日
我使用以下代码尝试确定以后的日期:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSString *today = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", today);
NSDate *todayDate = [dateFormatter dateFromString:today];
NSLog(@"TodayDate: %@", todayDate);
for (Job *j in appDelegate.jobs){
if ([j.dueDate laterDate:todayDate]){
[jobsToDisplay addObject:j];
}
}
然而,这段代码不起作用,似乎返回的日期比他们应该的日期落后+ 1小时。谁能解释我在这里需要做什么?
非常感谢,
Tysin
答案 0 :(得分:1)
您应该将时区设置为UTC(或您正在使用的任何时区)以获取确切的日期。
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
使用以下代码比较日期
[NSDate compare:obj]
答案 1 :(得分:1)
您可以使用NSDate的compare:
实例方法
//If j.dueDate = today
if ([j.dueDate compare:todayDate] == NSOrderedSame) {
return YES;
}
//j.dueDate is latest
else if ([j.dueDate compare:todayDate] == NSOrderedDescending) {
return YES;
}