iOS日期判断是今天、昨天还是明天

①NSCalendar自带方法就能判断一个日期是否是今天还是明天

+ (NSString *)checkTheDate:(NSString *)string{

NSDateFormatter *format = [[NSDateFormatter alloc]init];
[format setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [format dateFromString:string];
BOOL isToday = [[NSCalendar currentCalendar] isDateInToday:date];
NSString *strDiff = nil;

if(isToday) {
    strDiff= [NSString stringWithFormat:@"今天"];
}
return strDiff;
}

NSCalendar其他判断方法

- (BOOL)isDate:(NSDate *)date1 inSameDayAsDate:(NSDate *)date2//判断两个日期是否是同一天

 - (BOOL)isDateInToday:(NSDate *)date; //判断一个日期是否是今天

 - (BOOL)isDateInYesterday:(NSDate *)date; //判断一个日期是否是昨天 

 - (BOOL)isDateInTomorrow:(NSDate *)date;//判断一个日期是否是明天

 - (BOOL)isDateInWeekend:(NSDate *)date ; //判断一个日期是否是在本周


/**
是否为今天
**/

- (BOOL)isToday

{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    int unit = NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear;

    // 1.获得当前时间的年月日

    NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];

    // 2.获得self的年月日

    NSDateComponents *selfCmps = [calendar components:unit fromDate:self];

    return

    (selfCmps.year == nowCmps.year) &&

    (selfCmps.month == nowCmps.month) &&

    (selfCmps.day == nowCmps.day);

}

/**
是否为昨天
*/

- (BOOL)isYesterday

{
    // 2018-05-01
    NSDate *nowDate = [[NSDate date] dateWithYMD];
    // 2017-04-30
    NSDate *selfDate = [self dateWithYMD];

    // 获得nowDate和selfDate的差距
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *cmps = [calendar components:NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];

    return cmps.day == 1;
}

/**
是否为今年
*/

- (BOOL)isThisYear

{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    int unit = NSCalendarUnitYear;
    
    // 1.获得当前时间的年月日
    NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];
    // 2.获得self的年月日
    NSDateComponents *selfCmps = [calendar components:unit fromDate:self];

    return nowCmps.year == selfCmps.year;
}

/**
返回一个只有年月日的时间
*/

- (NSDate *)dateWithYMD
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"yyyy-MM-dd";

    NSString *selfStr = [fmt stringFromDate:self];

    return [fmt dateFromString:selfStr];
}

/**
获得与当前时间的差距
*/

- (NSDateComponents *)deltaWithNow

{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];
}

推荐阅读更多精彩内容