ios--时间格式化(cell业务逻辑处理)
if (今年) {
if (今天) {
if (大于1小时) {
} else if (大于2分钟) {
} else { // 刚刚
}
} else if (昨天) {
} else { // 昨天之前
}
} else{ // 非今年
// 1.把帖子发布时间字符串转换成(NSDate)日期对象 => NSDateFormatter
// NSDateFormatter:NSStreing与NSDate互转
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置格式
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// 发布日期对象
NSDate *createDate = [fmt dateFromString:item.create_time]; // 获取日历类对象
// NSCalendar *calendar = [NSCalendar currentCalendar];
// 获取日期组件
// NSDateComponents *cmp = [calendar components:NSCalendarUnitHour | NSCalendarUnitMinute fromDate:createDate toDate:[NSDate date] options:NSCalendarWrapComponents]; NSString *timeStr = item.create_time;
if ([createDate isThisYear]) {
if ([createDate isThisToday]) { // 获取日期差值
if (cmp.hour >= ) {
timeStr = [NSString stringWithFormat:@"%ld小时前",cmp.hour];
} else if (cmp.minute >= ) {
timeStr = [NSString stringWithFormat:@"%ld分钟前",cmp.minute];
} else { // 刚刚
timeStr = @"刚刚";
}
} else if ([createDate isThisYesterday]) { // 昨天
// 昨天 21:10
fmt.dateFormat = @"昨天 HH:mm";
timeStr = [fmt stringFromDate:createDate]; } else { // 昨天之前 08-05 21:10:08
fmt.dateFormat = @"MM-dd HH:mm:ss";
timeStr = [fmt stringFromDate:createDate];
}
} 因为判断日期要常用,我们就把判断方法抽取到NSDate的分类 - (BOOL)isThisYear
{
// 获取当前日期对象
NSDate *curDate = [NSDate date];
// 获取日历类
NSCalendar *curCalendar = [NSCalendar currentCalendar];
// 获取自己日期组件(年,月,等) self代码外面调用这个方法的日历类(也就是createDate)
NSDateComponents *selfCmp = [curCalendar components:NSCalendarUnitYear fromDate:self];
// 获取当前时间日期组件(年,月,等)
NSDateComponents *curCmp = [curCalendar components:NSCalendarUnitYear fromDate:curDate];
return curCmp.year == selfCmp.year;
} // 判断是否是今天
- (BOOL)isThisToday
{
// 获取日历类
NSCalendar *curCalendar = [NSCalendar currentCalendar];
return [curCalendar isDateInToday:self];
} - (BOOL)isThisYesterday
{
NSCalendar *curCalendar = [NSCalendar currentCalendar];
return [curCalendar isDateInYesterday:self];
}
ios--时间格式化(cell业务逻辑处理)的更多相关文章
- 用适配器模式处理复杂的UITableView中cell的业务逻辑
用适配器模式处理复杂的UITableView中cell的业务逻辑 适配器是用来隔离数据源对cell布局影响而使用的,cell只接受适配器的数据,而不会与外部数据源进行交互. 源码: ModelCell ...
- iOS开发---业务逻辑
iOS开发---业务逻辑 1. 业务逻辑 iOS的app开发的最终目的是要让用户使用, 用户使用app完成自己的事就是业务逻辑, 业务逻辑的是最显眼开发工作.但是业务逻辑对于开发任务来说, 只是露 ...
- iOS登录及token的业务逻辑
登录的业务逻辑 { http:是短连接. 服务器如何判断当前用户是否登录? // 1. 如果是即时通信类:长连接. // 如何保证服务器跟客户端保持长连接状态? // "心跳包" ...
- iOS 获取当前时间格式化字符串
iOS 获取当前时间格式化字符串 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保 ...
- js时间格式化函数(兼容IOS)
* 时间格式化 * @param {Object} dateObj 时间对象 * @param {String} fmt 格式化字符串 */ dateFormat(dateObj, fmt) { le ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑
Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案如下所示: 下面我们讨论整个应用的结构,根据应用中不同组件的逻辑相关性,分离到不同的层中,层与层之间的通讯通过或者不通过限制.分层属于架构 ...
- 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法
首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...
- ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑
上次搭建好了项目框架,但还是觉得不太对劲,后来才想起来没有对开发目标进行定位,这个小demo虽然不用做需求分析,但是要实现什么效果还得明确.后来想了一下就做个最简单的网站,目标定为小公司进行展示用的网 ...
- 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑
前言 从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...
随机推荐
- 这次,雅虎真的撤销QA团队了
在一个软件开发过程中取消了质量保证团队会发生什么?更少,而不是更多的错误,以及一个大大加快的开发周期. 至少,根据雅虎的经验,确实如此.该公司的首席设计师Amotz Maimon,以及科学与技术高级副 ...
- 【转载】LoadRunner11下载以及详细破解说明
前期准备:LoadRunner11 下载请猛戳这里 传送门LoadRunner破解文件 下载请猛戳这里 传送门LoadRunner注册表清理工具 下载请猛戳这里 传送门 LoadRunner11破解方 ...
- [Cocos2D-x For WP8]Tile Map创建地图
在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapedi ...
- 学习js正则表达式
function UrlRegEx(url) { //如果加上/g参数,那么只返回$0匹配.也就是说arr.length = 0 var re = /(\w+):\/\/([^\:|\/]+)(\:\ ...
- usaco silver刷水~其实是回顾一下,补题解
[BZOJ1606][Usaco2008 Dec]Hay For Sale 裸01背包 ;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]=max(f[j], ...
- IOS 登陆判断问题
有一个登陆界面,还有一个包含多个选项卡的界面在ViewController.m中登陆按钮的代码如下 UIViewController *controller=[[Tabbarcontroller al ...
- php 安装memcacheq
berkeley: http://download.oracle.com/otn/berkeley-db/db-6.1.19.tar.gz?AuthParam=1408431634_4887d4468 ...
- C#进程操作
C#进程操作 转:http://www.cnblogs.com/vienna/p/3560804.html 一.C#关闭word进程 foreach (System.Diagnostics.Proc ...
- width,clientWidth,offsetWidth
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- map的用法
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数: map<stri ...