检查日期是否在今年 Objective c

Check date if exist in this year or not in Objective c

我 googled 发现很多 link 比较两个日期,但我的情况有点不同,我无法在 google 中找到。我想比较今年是否存在日期。 我有这种格式的日期。 2016-01-20T06:19:27 所以如果低于当年那么我将使用这种格式

[dateformat setDateFormat:@"dd MMM yyyy"];

并且如果在今年存在则将使用

[dateformat setDateFormat:@"dd MMM"];

(删除年份),将来不会有机会日期。 所以需要解决方案。

 NSString * date = [dictionary objectForKey:@"date"];
 NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
 [dateformat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
 NSDate *myDate = [dateformat dateFromString:date];

 [dateformat setDateFormat:@"yyyy"];

 NSString *strYear=[dateformat stringFromDate:myDate];

  if([strYear isEqualToString:[dateformat stringFromDate:[NSDate date]]){
     [dateformat setDateFormat:@"dd MMM yyyy"];
     NSString *strDate=[dateformat stringFromDate:myDate];
     NSLog(@"%@",strDate);
  }
  else{
    [dateformat setDateFormat:@"dd MMM"];
    NSString *strDate=[dateformat stringFromDate:myDate];
    NSLog(@"%@",strDate);
  }

NSCalender 有非常强大的方法来进行任何类型的日期数学计算:

NSString *dateString = @"2016-01-20T06:19:27";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss";
NSDate *date = [formatter dateFromString:dateString];
BOOL isInCurrentYear = [[NSCalendar currentCalendar] compareDate:date toDate:[NSDate date] toUnitGranularity:NSCalendarUnitYear] == NSOrderedSame;
formatter.dateFormat = isInCurrentYear ?  @"dd MMM" : @"dd MMM yyyy";
NSString *formattedDateString = [formatter stringFromDate:date];