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

在详细一点就是我们在微信朋友圈中 所看到的时间格式。

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

今天这里带来的是一个简单的类别。

方便实用。

以及简单的实际应用。

先看看一看类别是什么样子的

.h

#import <Foundation/Foundation.h>

@interface NSDate (CXExtension)

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

-(BOOL)isThisYear;
-(BOOL)isToday;
-(BOOL)isYesterday; @end

.m

#import "NSDate+CXExtension.h"

@implementation NSDate (CXExtension)

-(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: ];
}
//判断是否为今年
-(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:];
return unit.year == && unit.month == && unit.day == ; }
@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 > ) {
return [NSString stringWithFormat:@"%zd小时前",unit.hour];
}else if (unit.minute > ){
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 日期的简洁格式展示的更多相关文章

  1. IOS 设置ios中DatePicker的日期为中文格式

    设置ios中DatePicker的日期为中文格式 1.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设置为“简体中文”, 2.“区域格式”设置为“中国”.

  2. Java与IOS日期格式

    //JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...

  3. iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  4. style不同取值对应的日期、时间格式

    from : http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599690.html sql server2000中使用convert来取得d ...

  5. placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容

    placeholder:::-webkit-input-placeholder { color: rgba(153, 153, 153, 0.541);font-size:12px;}:-moz-pl ...

  6. c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测)

    c# 日期函数DateTime.ToString()日期的各种格式  (本人亲测) 平时写代码的过程难免遇到对日期的格式转换,这个时候很容易忘记具体格式的转换是什么,当然这不是什么复杂的,查一下就能找 ...

  7. 不修改系统日期和时间格式,解决Delphi报错提示 '****-**-**'is not a valid date and time

    假如操作系统的日期格式不是yyyy-MM-dd格式,而是用strtodate('2014-10-01')) 来转换的话,程序会提示爆粗 '****-**-**'is not a valid date ...

  8. java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串)

    总结一些日期常用的代码,方便以后直接拿 <code> /** * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) * @param year * @param m ...

  9. 常用SQL时间格式SQLServer中文版的默认的日期字段datetime格式是yyyy-mm-d

    常用SQL时间格式 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() -- ::08.177 ...

随机推荐

  1. Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)

    本节是创建 Volume 的第三部分,也是最后一部分:cinder-volume 的处理过程. 第一部分和第二部分可以参考前面两个小节.cinder-volume 通过 driver 创建 volum ...

  2. MySQL学习笔记十二:数据备份与恢复

    数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...

  3. MySQL存储过程及触发器

    一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...

  4. CSS三种写法的优先级

    在HTML文件中引入CSS样式有三种方法: 外部样式:通过link标签引入CSS样式: 内页样式:写在HTML页面里面的style标签里面: 行内样式:写在对应标签的style属性里面. 我知道一般情 ...

  5. 【记录】JS 获取图片原始尺寸-防止图片溢出

    示例代码: <div id="div_content"> <img src="http://static.cnblogs.com/images/logo ...

  6. 算法:KMP算法

    算法:KMP排序 算法分析 KMP算法是一种快速的模式匹配算法.KMP是三位大师:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的,所以取首字母组成KMP. 少部分图片来自孤~影 ...

  7. 浅析JS中的模块规范(CommonJS,AMD,CMD)

    如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚至是CMD这些规范咯,我也听过,但之前也真的是听听而已. 现在就看看吧,这些规范到底是啥东西,干嘛的. 一.CommonJS ...

  8. httphandler和httpmodule的区别

    ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pi ...

  9. maven 插件

    一直没注意看maven执行过程中的打印日志,今天突然发现一段话,说编译以及resource未指定编码,默认gbk.于是,百度了设置编码的方式: <plugin> <groupId&g ...

  10. Effective java笔记(五),枚举和注解

    30.用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型.在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚 ...