检查日期是否存在于今年或目标c中

时间:2016-01-29 07:30:07

标签: ios objective-c xcode nsdateformatter date-format

我用谷歌搜索并发现许多链接比较了2个日期,但我的情况有点不同,我无法在谷歌找到。我想比较今年是否存在的日期。 我有这种格式的日期。  的 2016-01-20T06:19:27 所以如果低于当年,那么我将使用这种格式

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

如果今年存在,那么将使用

[dateformat setDateFormat:@"dd MMM"];

(删除年份),以后将不存在任何机会日期。 所以需要解决方案。

2 个答案:

答案 0 :(得分:4)

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];

答案 1 :(得分:1)

 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);
  }