/**
1.今年
1> 今天
* 1分内: 刚刚
* 1分~59分内:xx分钟前
* 大于60分钟:xx小时前
2> 昨天
* 昨天 xx:xx
3> 其他
* xx-xx xx:xx
2.非今年
1> xxxx-xx-xx xx:xx
*/
-(NSString *)created_at{
// _created_at == Thu Oct 16 17:06:25 +0800 2014 现在得到的string
// dateFormat == EEE MMM dd HH:mm:ss Z yyyy
// NSString --> NSDate
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
// 设置日期格式(声明字符串里面每个数字和单词的含义)
// E:星期几
// M:月份
// d:几号(这个月的第几天)
// H:24小时制的小时
// m:分钟
// s:秒
// y:年
fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
//微博创建的日期
NSDate *createDate = [fmt dateFromString:_created_at];
//当前时间
NSDate *now = [NSDate date];
//日历对象
NSCalendar *calendar = [NSCalendar currentCalendar];
// NSCalendarUnit枚举代表想获得哪些差值
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour |NSCalendarUnitMinute |NSCalendarUnitSecond;
//计算两个日期之间的差值
NSDateComponents *cmps = [calendar components:unit fromDate:createDate toDate:now options:0];
//MyLog(@"createDate-%@ now-%@ cmps-%@", createDate, now, cmps);
if ([createDate isThisYear]) {//今年
if ([createDate isYesterday]) {//昨天
fmt.dateFormat = @"昨天 HH:mm";
return [fmt stringFromDate:createDate];
}else if([createDate isToday]){
if (cmps.hour >= 1) {
return [NSString stringWithFormat:@"%ld小时前",(long)cmps.hour];
}else if(cmps.minute >= 1){
return [NSString stringWithFormat:@"%ld分钟前",(long)cmps.minute];
}else{
return @"刚刚";
}
}else{
fmt.dateFormat = @"MM-dd HH:mm";
return [fmt stringFromDate:createDate];
}
}else{//不是今年,往年的时间显示
fmt.dateFormat = @"yyyy-MM-dd HH:mm";
return [fmt stringFromDate:createDate];
}
}
NSDate分类
-(BOOL)isThisYear{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:self];
NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];
return dateCmps.year = nowCmps.year;
}
-(BOOL)isYesterday{
NSDate *now = [NSDate date];
// date == 2014-04-30 10:05:28 --> 2014-04-30 00:00:00
// now == 2014-05-01 09:22:10 --> 2014-05-01 00:00:00
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd";
// 2014-04-30
NSString *dateStr = [fmt stringFromDate:self];
// 2014-10-18
NSString *nowStr = [fmt stringFromDate:now];
// 2014-10-30 00:00:00
NSDate *date = [fmt dateFromString:dateStr];
// 2014-10-18 00:00:00
now = [fmt dateFromString:nowStr];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];
return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;
}
-(BOOL)isToday{
NSDate *now = [NSDate date];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyy-MM-dd";
NSString *dateStr = [fmt stringFromDate:self];
NSString *nowStr = [fmt stringFromDate:now];
return [dateStr isEqualToString:nowStr];
}
原文:http://www.cnblogs.com/zinder/p/5013510.html