ios中处理时间是否是今天,昨天,今年

1.创建NSDate的分类

#import "NSDate+MJ.h"

/**

 *  是否为今天

 */

- (BOOL)isToday

{

    NSCalendar *calendar = [NSCalendar currentCalendar];

    int unit = NSCalendarUnitDay | NSCalendarUnitMonthNSCalendarUnitYear;

    

    // 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

{

    // 2014-05-01

    NSDate *nowDate = [[NSDate date] dateWithYMD];

    

    // 2014-04-30

    NSDate *selfDate = [self dateWithYMD];

    

    // 获得nowDateselfDate的差距

    NSCalendar *calendar = [NSCalendar currentCalendar];

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

    return cmps.day == 1;

}

- (NSDate *)dateWithYMD

{

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

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

    NSString *selfStr = [fmt stringFromDate:self];

    return [fmt dateFromString:selfStr];

}


/**

 *  是否为今年

 */

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

}


/**

 *  获得与当前时间的差距

 */

- (NSDateComponents *)deltaWithNow

{

    NSCalendar *calendar = [NSCalendar currentCalendar];

    int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

    return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];

}


判断某一时间距离当前的时间差

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";

    // 获得微博发布的具体时间

    NSDate *createDate = [fmt dateFromString:@“2016-01-14”];

    

    // 判断是否为今年

    if (createDate.isThisYear) {

        if (createDate.isToday) { // 今天

            NSDateComponents *cmps = [createDate deltaWithNow];

            if (cmps.hour >= 1) { // 至少是1小时前发的

                return [NSString stringWithFormat:@"%d小时前", cmps.hour];

            } else if (cmps.minute >= 1) { // 1~59分钟之前发的

                return [NSString stringWithFormat:@"%d分钟前", cmps.minute];

            } else { // 1分钟内发的

                return @"刚刚";

            }

        } else if (createDate.isYesterday) { // 昨天

            fmt.dateFormat = @"昨天 HH:mm";

            return [fmt stringFromDate:createDate];

        } else { // 至少是前天

            fmt.dateFormat = @"MM-dd HH:mm";

            return [fmt stringFromDate:createDate];

        }

    } else { // 非今年

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

        return [fmt stringFromDate:createDate];

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值