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岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...
随机推荐
- 【JAVA】Quartz中时间表达式的设置
Quartz中时间表达式的设置-----corn表达式 时间格式: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒>分>小时>日>月 ...
- 如何将一个对象存到网页中并在js中使用
需求:希望在js中使用Controller传过来的对象,特别是对象里存有list的数据. 不希望循环使用隐藏域. 解决办法:在View中使用Json.Net序列化: @{ string jsonStr ...
- ThinkPad_T430重装系统
联想thinkpad T430为T系列的旗舰级产品,全新的ThinkPad T430将该系列坚固的机身.稳定高效的散热表现.超强的易用性.不俗的性能以及出色的操控感受等优点完美的继承下来,始终坚持把每 ...
- GO语言练习:map基本用法
1.代码 2.运行 1.代码 文件:map.go package main import "fmt" type PersionInfo struct{ ID string Name ...
- 在线阅读android源代码
这两天一直在寻找android系统的源代码,但是直到一个小时之前,一直未能如愿.但是,令人欣慰的是,现在找到了. 网上有不少帖子介绍如何下载android源代码,包括在linux系统,windows系 ...
- 转载:C# this.Invoke()的作用与用法 理解三
Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 在多线程编程中,我们经常要在工作线程 ...
- redis虚拟机模拟集群,节点,增加多端口命令
Redis启动多端口,运行多实例 使用redis在同一台机器上,启用多个端口,实现多个实例,完成集群的模拟实现. 启动多实例 redis默认启动端口为6379,我们可以使用 --port 来指定多个端 ...
- Emule Xtreme Kid eD2K 设置
设置udp和tcp端口: 测试结果必须为通过,若不通过, 1.请将主机ip丢入路由器DMZ区(设置将以上端口与本机ip地址绑定) 2.在windows防火墙中加入以上端口允许通行项 测试结果: 其它一 ...
- js实现时钟
<!DOCTYPE html> <html> <head> <title>Js版带表盘的时钟</title> <meta charse ...
- IOS第一天
第一天(hello world) 1>UIView所有的控件都继承UIView,倒位置,宽度和高度..UIButton UILable 2>UIViewController .h 是声明属 ...