一:将需要展示的时间转为时间戳,然后调用时间简化方法
NSString *time=@"将要展示的时间";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate* date = [formatter dateFromString:time];
time=[self ConvertMessageTime:(long long)[date timeIntervalSince1970]];
- (NSString *)ConvertMessageTime:(long long)secs {
NSString *timeText = nil;
NSDate *messageDate = [NSDate dateWithTimeIntervalSince1970:secs];
// DebugLog(@"messageDate==>%@",messageDate);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString *strMsgDay = [formatter stringFromDate:messageDate];
NSDate *now = [NSDate date];
NSString *strToday = [formatter stringFromDate:now];
NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-(24 * 60 * 60)];
NSString *strYesterday = [formatter stringFromDate:yesterday];
NSString *_yesterday = nil;
if ([strMsgDay isEqualToString:strToday]) {
[formatter setDateFormat:@"HH':'mm"];
} else if ([strMsgDay isEqualToString:strYesterday]) {
_yesterday = NSLocalizedStringFromTable(@"Yesterday", @"RongCloudKit", nil);
//[formatter setDateFormat:@"HH:mm"];
}
if (nil != _yesterday) {
timeText = _yesterday; //[_yesterday stringByAppendingFormat:@" %@", timeText];
} else {
timeText = [formatter stringFromDate:messageDate];
}
return timeText;
}
二:
NSString *time=@"将要展示的时间";
time=[self ConvertNewtimeWithtime:time];
-(NSString *)ConvertNewtimeWithtime:(NSString *)time
{
NSDateFormatter *fmt=[[NSDateFormatter alloc]init];
fmt.dateFormat=@"EEE MMM dd HH:mm:ss Z yyyy";
fmt.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];
NSDate *create=[fmt dateFromString:_created_at];
if (create.isToday) {
if (create.deltaWithNow.hour>=1) {
return [NSString stringWithFormat:@"%ld小时前",(long)create.deltaWithNow.hour];
}
else if (create.deltaWithNow.minute>=1)
{
return [NSString stringWithFormat:@"%ld分钟前",(long)create.deltaWithNow.minute];
}
else
{
return @"刚刚";
}
}
else if(create.isYesterday)
{
fmt.dateFormat=@"昨天 HH:mm";
return [fmt stringFromDate:create];
}
else if(create.isToyear)
{
fmt.dateFormat=@"MM-dd HH:mm";
return [fmt stringFromDate:create];
}
else
{ fmt.dateFormat=@"yyyy-MM-dd HH:mm";
return [fmt stringFromDate:create];
}
}
给时间类增加一个分类 ,如图
-(BOOL)isToday
{
NSCalendar *calendar=[NSCalendar currentCalendar];
int unit=NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay ;
NSDateComponents *nowdate= [calendar components:unit fromDate:[NSDate date]];
NSDateComponents *components= [calendar components:unit fromDate:self];
return (nowdate.year== components.year)&&(nowdate.month== components.month)&&(nowdate.day== components.day);
}
-(BOOL)isYesterday
{
NSDateFormatter *fmt=[[NSDateFormatter alloc]init];
fmt.dateFormat=@"yyyy-MM-dd";
NSString *strdate =[fmt stringFromDate:[NSDate date]];
NSDate *nowdate=[fmt dateFromString:strdate];
NSString *strcreatdate =[fmt stringFromDate:[NSDate date]];
NSDate *creatdate=[fmt dateFromString:strcreatdate];
int unit=NSCalendarUnitDay;
NSCalendar *calendar=[NSCalendar currentCalendar];
NSDateComponents *comps= [calendar components:unit fromDate:creatdate toDate:nowdate options:0];
return comps.day==1;
}
-(BOOL)isToyear
{
NSCalendar *calendar=[NSCalendar currentCalendar];
int unit=NSCalendarUnitYear ;
NSDateComponents *nowdate= [calendar components:unit fromDate:[NSDate date]];
NSDateComponents *components= [calendar components:unit fromDate:self];
return (nowdate.year== components.year);
}
-(NSDateComponents *)deltaWithNow
{
int unit=NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ;
NSCalendar *calendar=[NSCalendar currentCalendar];
return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];
}