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岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...
随机推荐
- webstorm常用快捷键(常用)
ctrl+/ 注释 ctrl+shift+/ 注释一块的代码 ctrl+shift+z 返回撤撤销前的操作 ctrl+shift+up/down 代码向上/向下移动 ctrl+b或ctrl+鼠标左键单 ...
- 【BZOJ】2741: 【FOTILE模拟赛】L
题意:给定一个长度为n的序列,m次询问,每次询问一个区间[l, r],求max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r.(n< ...
- C语言工具---Code::Blocks
Code::Blocks Code::Blocks 是一个开源的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.由纯粹的C++语言开发完成,它使用了著名的图形界面库wx ...
- 腾讯 pc端面试(2015.10.26)
整个面试过程全部围绕着我在前一家公司做过的项目开始提问.因为这个项目是我主要负责的,所以面试官第一个问题是让我讲解了整个项目的框架结构.在对于项目的框架结构的讲解方面,大致条理还算清醒但是因为很少对做 ...
- GO语言练习:组合的用法
1.代码 2.运行 1.代码 package main import "fmt" type Base struct { Name string } func (base * Bas ...
- DBLINK 创建的注意事项
摘自:http://blog.csdn.net/xulei_19850322/article/details/8219023 配置DBLINK细节很重要,请重点关注下面几点 1.确定被连接数据库可以连 ...
- C#中的接口
C#中的接口(转) 转自:http://www.cnblogs.com/zhenyulu/articles/377705.html 本文中所有图示纯为个人理解(参考了Assembly中元数据的存储方式 ...
- [LintCode] Maximal Rectangle 最大矩形
Given a 2D boolean matrix filled with False and True, find the largest rectangle containing all True ...
- 用一段JS代码来比较各浏览器的极限内存与运算速度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# 文件和文件夹操作
一.文件操作 1.File类的常用静态方法: void AppendAllText(string path, string contents),将文本contents附加到文件path中 bool E ...