iOS时间格式简洁展示

作者: 海边的遐想 | 来源:发表于2016-04-14 14:49 被阅读146次

在这里给大家介绍一种类似微博,微信中看到的时间格式实现方式。

例如:刚刚 -几分钟前-几小时前等等。

.h

#import NSDate

@interface NSDate (Extension)

-(NSDateComponents *)dateFrom:(NSDate *)from;

-(BOOL)isThisYear;

-(BOOL)isToday;

-(BOOL)isYesterday;

@end

.m

#import "NSDate+Extension.h"

@implementation NSDate (Extension)

-(NSDateComponents *)dateFrom:(NSDate *)from{

//日历

NSCalendar *calendar = [NSCalendar currentCalendar];

NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;

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

}

//判断是否为今年

-(BOOL)isThisYear{

NSCalendar * calendar = [NSCalendar currentCalendar];

NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];

NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];

return selfYear == nowYear;

}

//判读是否为今天

-(BOOL)isToday{

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

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

NSString * nowDate = [formatter stringFromDate:[NSDate date]];

NSString * selfDate = [formatter stringFromDate:self];

return [nowDate isEqualToString:selfDate];

}

//判断是否为昨天

-(BOOL)isYesterday{

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

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

NSDate * nowDate = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];

NSDate * selfdate = [formatter dateFromString:[formatter stringFromDate:self]];

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDateComponents * unit = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:selfdate toDate:nowDate options:0];

return unit.year == 0 && unit.month == 0 && unit.day == 1;

}

@end

下面的实例所展现的效果:当时间为去年时,显示全部时间格式,当时间为今年时分为以下情况:

当时间为今天时,判断具体时间产生、几小时前、几分钟前、刚刚的显示格式;

当时间为昨天是,显示昨天以及时分秒;

当时间既不是今天又不是昨天时,显示除年以外的所有时间格式

-(NSString *)create_time{

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

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate * creat = [formatter dateFromString:_create_time];

if (creat.isThisYear) {

if (creat.isToday) {

NSDateComponents * unit = [creat dateFrom:creat];

if (unit.hour > 1) {

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

}else if (unit.minute > 1){

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

}else{

return @"刚刚";

}

}else if (creat.isYesterday){

formatter.dateFormat = @"昨天HH:mm:ss";

return[formatter stringFromDate:creat];

}else{

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

return [formatter stringFromDate:creat];

}

}

else{

return[formatter stringFromDate:creat];

}

}

相关文章

  • iOS时间格式简洁展示

    在这里给大家介绍一种类似微博,微信中看到的时间格式实现方式。 例如:刚刚 -几分钟前-几小时前等等。 .h #im...

  • iOS 日期的简洁格式展示

    首先我要解释一下标题的意义,日期的简洁格式展示,之所以简介,是因为让人一目了然,不需要思考是什么时候。 在详细一点...

  • 友好的时间展示格式

    具体日期,史学家在行。对于我们,“昨天”,“几个月前”,比较舒服。通常论坛,评论的时间使用这种格式。 1小时前

  • iOS文本编程指南(一)

    iOS中的文本处理 iOS平台给你提供了多种展示文本以及让用户编辑文本的方式。同时也能够展示格式化的内容及网页内容...

  • iOS 时间格式

  • iOS 时间格式

    常用时间格式化解释 聊天页面时间显示规则如下 时间原文链接[https://www.cnblogs.com/Luc...

  • 自定义时间控件

    S_CustomTimeTest picker根据传入的时间格式进行展示 传入时间格式,默认格式为yyyy-MM-...

  • 安卓下透明色没展示问题

    下图是chrome自带的颜色选择器 以上设置的透明女在ios下展示的正确的但是安卓下没有展示,统一采用rgba格式。

  • IOS 时间格式转换

    //时间转换 - (NSString*)getTimeWithString:(NSString*)str{ NSS...

  • iOS NSDateFormatter 时间格式

网友评论

    本文标题:iOS时间格式简洁展示

    本文链接:https://www.haomeiwen.com/subject/ywmglttx.html