IOS 日期的简洁格式展示
首先我要解释一下标题的意义,日期的简洁格式展示,之所以简介,是因为让人一目了然,不需要思考是什么时候。
在详细一点就是我们在微信朋友圈中 所看到的时间格式。
例如:刚刚 -几分钟前-几小时前等等。
今天这里带来的是一个简单的类别。
方便实用。
以及简单的实际应用。
先看看一看类别是什么样子的
.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 日期的简洁格式展示的更多相关文章
- IOS 设置ios中DatePicker的日期为中文格式
设置ios中DatePicker的日期为中文格式 1.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设置为“简体中文”, 2.“区域格式”设置为“中国”.
- Java与IOS日期格式
//JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...
- iOS开发之JSON格式数据的生成与解析
本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...
- style不同取值对应的日期、时间格式
from : http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599690.html sql server2000中使用convert来取得d ...
- placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容
placeholder:::-webkit-input-placeholder { color: rgba(153, 153, 153, 0.541);font-size:12px;}:-moz-pl ...
- c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测)
c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测) 平时写代码的过程难免遇到对日期的格式转换,这个时候很容易忘记具体格式的转换是什么,当然这不是什么复杂的,查一下就能找 ...
- 不修改系统日期和时间格式,解决Delphi报错提示 '****-**-**'is not a valid date and time
假如操作系统的日期格式不是yyyy-MM-dd格式,而是用strtodate('2014-10-01')) 来转换的话,程序会提示爆粗 '****-**-**'is not a valid date ...
- java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串)
总结一些日期常用的代码,方便以后直接拿 <code> /** * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) * @param year * @param m ...
- 常用SQL时间格式SQLServer中文版的默认的日期字段datetime格式是yyyy-mm-d
常用SQL时间格式 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() -- ::08.177 ...
随机推荐
- ASP.NET MVC之JsonResult(六)
前言 这一节我们利用上节所讲Unobtrusive Ajax并利用MVC中的JsonResult来返回Json数据. JsonResult 上节我们利用分部视图返回数据并进行填充,当我们发出请求需要获 ...
- easyui-datagrid 列单击事件
首先要注意的就是,先添加一个js方法,名字可以自定义,但是必须得与下面的option里面的onClickRow:后面的一致即可 <script type="text/java ...
- C++入门知识总结(1)
1.有符号数和无符号数. 这个问题其实是一个很细的问题,我们还要把问题追溯到“位”,针对不同的“位”,那么能表示的最大数的范围不同.因为计算机存储数据都是以二进制的方式去存储的,即0和1,比如 110 ...
- PHP中curl_init函数用法
使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网 页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并 ...
- Sublime插件支持Sass编译和Babel解析ES6 & .sublime-build文件初探
用Sublime Text蛮久了,配置配来配去的,每次换电脑都得重头再配过,奈何人老了脑子不中用了,得好好整理一些,下次换电脑就有得参考了.. 同事说,他的WebStorm简直太方便,自身集成了很多方 ...
- angularjs的表单验证
angularjs内置了常用的表单验证指令,比如min,require等.下面是演示: <!DOCTYPE html> <html> <head> <meta ...
- 在c#中get同步访问http
参照文章:http://blog.csdn.net/qianmenfei/article/details/37974767 public static string SendMessage(strin ...
- 设计模式(三)工厂方法模式(Factory Pattern)
一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以 ...
- 神奇的CSS3按钮特效
点击这里查看效果 以下是源代码: <!doctype html> <html> <!-- author: @simurai --> <head> < ...
- 在window下配置laravel开发环境
1.由于有一点php基础,所以非常想更进一步,就选择据说在国外最流行的php框架来学习了,laravel框架,官网上介绍是为艺术而生,从知乎和一些论坛上看到,laravel学起来并不简单,首先配置问题 ...