NSDate+MJ.h
#import <Foundation/Foundation.h> @interface NSDate (MJ) /** * 是否为今天 */ - (BOOL)isToday; /** * 是否为昨天 */ - (BOOL)isYesterday; /** * 是否为今年 */ - (BOOL)isThisYear; /** * 返回一个只有年月日的时间 */ - (NSDate *)dateWithYMD; /** * 获得与当前时间的差距 */ - (NSDateComponents *)deltaWithNow; @end
NSDate+MJ.m
// // NSDate+MJ.m // ItcastWeibo // // Created by apple on 14-5-9. // Copyright (c) 2014年 itcast. All rights reserved. // #import "NSDate+MJ.h" @implementation NSDate (MJ) /** * 是否为今天 */ - (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 { // 2014-05-01 NSDate *nowDate = [[NSDate date] dateWithYMD]; // 2014-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; } - (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]; } @end
// 创建格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // 设置格式 _created_at = @"Mon Jul 14 16:13:07 +0800 2014"; fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy"; #warning 真机调试(真机显示时间,要写上这句话) fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; // 获得发微博的具体时间 NSDate *createDate = [fmt dateFromString:_created_at]; // 判断是否为今年 if (!createDate.isThisYear) { fmt.dateFormat = @"yyyy-MM-dd"; return [fmt stringFromDate:createDate]; } if (!createDate.isToday && !createDate.isYesterday) { // 不是今天,也不是昨天 fmt.dateFormat = @"MM-dd HH:mm"; return [fmt stringFromDate:createDate]; } if (!createDate.isToday) { fmt.dateFormat = @"昨天 HH:mm"; return [fmt stringFromDate:createDate]; } NSDateComponents *cmps = [createDate deltaWithNow]; if (!cmps.hour >= 1 && !cmps.minute >= 1) { return @"刚刚"; } if (!cmps.hour >= 1) { return [NSString stringWithFormat:@"%d分钟前", cmps.minute]; } return [NSString stringWithFormat:@"%d小时前", cmps.hour];