iOS时间个性化设置设置
现在在很多项目中,不会直接显示时间,很多时候都是显示“刚刚”,”XX分钟前”,等等字样,那么他们是怎么实现的呢 ? .新建一个NSDate的类目:NSDate+XMGExtension
NSDate+XMGExtension.h 文件 #import <Foundation/Foundation.h> @interface NSDate (XMGExtension)
-(NSDateComponents *)deltaFrom:(NSDate *)from;
/** 是否是今年 */
-(BOOL)isThisYear;
/** 是否是今天 */
-(BOOL)isToday;
/** 是否是昨天 */
-(BOOL)isYesterday;
@end NSDate+XMGExtension.m #import "NSDate+XMGExtension.h" @implementation NSDate (XMGExtension)
-(NSDateComponents *)deltaFrom:(NSDate *)from{ // 日历
NSCalendar *calendar = [NSCalendar currentCalendar]; // 比较时间
NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitMonth |NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ;
return [calendar components:unit fromDate:from toDate:self options:];
} -(BOOL)isThisYear{
// 日历
NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];
NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self]; return nowYear == selfYear; } //-(BOOL)isToday{
// // 日历
// NSCalendar *calendar = [NSCalendar currentCalendar];
//
// NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
//
// NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];
//
// NSDateComponents *selfCmps = [calendar components:unit fromDate:self];
//
// return nowCmps.year == selfCmps.year
// && nowCmps.month == selfCmps.month
// && nowCmps.day == selfCmps.day;
//
//
//} -(BOOL)isToday{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd"; NSString *nowString = [fmt stringFromDate:[NSDate date]];
NSString *selfString = [fmt stringFromDate:self]; return [nowString isEqualToString:selfString];
} -(BOOL)isYesterday{ NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd"; NSDate *nowDate = [fmt dateFromString:[fmt stringFromDate:[NSDate date]]];
NSDate *selfDate = [fmt dateFromString:[fmt stringFromDate:self]]; NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:]; return cmps.year ==
&& cmps.month ==
&& cmps.day == ; } @end 在model中使用 create_time getter方法 XMGTopic.h文件
/** 发帖时间 */
@property(nonatomic,copy)NSString *create_time; XMGTopic.m文件
#import "XMGTopic.h" @implementation XMGTopic
-(NSString *)create_time{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *create = [fmt dateFromString:_create_time]; if (create.isThisYear) { //今年
if (create.isToday) { //今天
NSDateComponents *cmps = [[NSDate date] deltaFrom:create];
if (cmps.hour>=) { //时间差距>=1小时
return [NSString stringWithFormat:@"%zd小时前",cmps.hour];
}else if(cmps.minute>=){ //时间差距>=1分分钟
return [NSString stringWithFormat:@"%zd分钟前",cmps.minute];
}else{//时间差距<1分分钟
return @"刚刚";
} }else if(create.isYesterday){ //昨天
fmt.dateFormat= @"昨天 HH:mm";
return [fmt stringFromDate:create]; }else{
fmt.dateFormat= @"MM-dd HH:mm";
return [fmt stringFromDate:create];
} }else{ //不是今年
return _create_time;
} }
@end 在view中XMGTopicCell.m文件中 -(void)setTopic:(XMGTopic *)topic{
_topic = topic;
topic.sina_v = arc4random_uniform()%; // 新浪加V
self.sinaVView.hidden = !topic.isSina_v; // 设置头像
[self.profileImageView sd_setImageWithURL:[NSURL URLWithString:topic.profile_image] placeholderImage:[UIImage imageNamed:@"defaultUserIcon"]];
// 设置昵称
self.nameLabel.text = topic.name; // 设置帖子的创建时间
self.createTimeLabel.text = topic.create_time; // 设置按钮文字
[self setupButtonTitle:self.dingButtton count:topic.ding placeholder:@"顶"]; [self setupButtonTitle:self.caiButton count:topic.cai placeholder:@"踩"]; [self setupButtonTitle:self.shareButton count:topic.repost placeholder:@"分享"]; [self setupButtonTitle:self.commentButton count:topic.comment placeholder:@"评论"]; }
具体效果

iOS时间个性化设置设置的更多相关文章
- WordPress 博客文章时间格式the_time()设置
国外设计的WordPress 主题里的文章的时间格式是类似“十一月 21, 2010”这种格式的,而中国人习惯的是年在前,月紧跟其后,日在末尾,所以看国外的就显得很别扭,但是我们可以通过修改WP时间代 ...
- 【JAVA】Quartz中时间表达式的设置
Quartz中时间表达式的设置-----corn表达式 时间格式: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒>分>小时>日>月 ...
- iOS 国际化多语言设置 xcode7
iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面 Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添 ...
- Quartz中时间表达式的设置-----corn表达式
Quartz中时间表达式的设置-----corn表达式 时间格式: <!-- s m h d m w(?) y(?) -->, 分别相应: 秒>分>小时>日>月 ...
- Linux 时间及时区设置
时间以及时区设置 by:授客 QQ:1033553122 1.首先确认使用utc还是local time. UTC(Universal Time Coordinated)=GMT(Greenwich ...
- Quartz中时间表达式的设置-----corn表达式 (转)(http://www.cnblogs.com/GarfieldTom/p/3746290.html)
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...
- iOS 10 之后权限设置
iOS 10 之后权限设置 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Privacy - Camera U ...
- Quartz中时间表达式的设置-----corn表达式 (转)
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...
- Django 时间与时区设置问题
django 时间与时区设置问题 在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Dja ...
随机推荐
- 使用ikmv将jar转换为dll,在.NET中直接调用
ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...
- ASP.NET MVC 混搭 ASP.NET WebForms 所导致的 Html.ActionLink/BeginForm 问题
首先,需要了解下这篇博文:<ASP.NET WebForms MapPageRoute 路由配置> 之前,在 ASP.NET MVC 中混搭 ASP.NET WebForms,使用 Map ...
- 用JAVA实现插值查询的方法(算近似值,区间求法)
插值查询:如果有这样一张表,有一列叫水位,有一列叫库容,比如下面的图. 我现在想做这么一件事情:对于这个测站而言,当我输入某一个水位或者库容的时候,想要查询到对应的水位或者库容呢? 而这个值不一定是存 ...
- jQuery-1.9.1源码分析系列(一)整体架构
不废话,直接上关键.这个系列中有好些直接借用别人的资料,我将他们整合在自认为比较合理的地方.所以在此先谢谢那些前辈. 注意:后续系列中jQuery实例多用$(...)来表示 1. 初始化与链式调 ...
- CSS魔法堂:重拾Border之——解构Border
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- 让我们一起用开源数据库和开源框架废弃Access
一.为什么要废弃Access? 1.客户的机子上需要安装access的驱动 ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了. 2.操作时性能不佳 using System; ...
- 6.Configure Domain Classes(配置领域类)【EF Code-First 系列】
在前面的部分中,我们学习了Code-First默认约定,Code-First使用默认的约定,根据你的领域类,然后生成概念模型. Code-First模式,发起了一种编程模式:约定大于配置.这也就是说, ...
- 企业 SOA 设计(2)–组件化产品开发平台
上一篇<企业 SOA 设计(1)–ESB 设计>中,写到我们的 SOA 设计分为两个层面来进行:一个是系统间的 SOA 设计,主要通过 ESB 来完成:另一方面则是单个应用系统内部的 SO ...
- urlMappings与URL映射
此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果.这也是URL映射本来的作用. ...
- git的使用以及github
现在公司使用的是svn,然而,技多不压身,现在学习一下github http://blog.csdn.net/llf369477769/article/details/51917557这篇博客总结的很 ...