iOS之计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
/**
* 计算上次日期距离现在多久
*
* @param lastTime 上次日期(需要和格式对应)
* @param format1 上次日期格式
* @param currentTime 最近日期(需要和格式对应)
* @param format2 最近日期格式
*
* @return xx分钟前、xx小时前、xx天前
*/
+ (
NSString
*)timeIntervalFromLastTime:(
NSString
*)lastTime
lastTimeFormat:(
NSString
*)format1
ToCurrentTime:(
NSString
*)currentTime
currentTimeFormat:(
NSString
*)format2{
//上次时间
NSDateFormatter
*dateFormatter1 = [[
NSDateFormatter
alloc]init];
dateFormatter1.dateFormat = format1;
NSDate
*lastDate = [dateFormatter1 dateFromString:lastTime];
//当前时间
NSDateFormatter
*dateFormatter2 = [[
NSDateFormatter
alloc]init];
dateFormatter2.dateFormat = format2;
NSDate
*currentDate = [dateFormatter2 dateFromString:currentTime];
return
[Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];
}
+ (
NSString
*)timeIntervalFromLastTime:(
NSDate
*)lastTime ToCurrentTime:(
NSDate
*)currentTime{
NSTimeZone
*timeZone = [
NSTimeZone
systemTimeZone];
//上次时间
NSDate
*lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]];
//当前时间
NSDate
*currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]];
//时间间隔
NSInteger
intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];
//秒、分、小时、天、月、年
NSInteger
minutes = intevalTime / 60;
NSInteger
hours = intevalTime / 60 / 60;
NSInteger
day = intevalTime / 60 / 60 / 24;
NSInteger
month = intevalTime / 60 / 60 / 24 / 30;
NSInteger
yers = intevalTime / 60 / 60 / 24 / 365;
if
(minutes <= 10) {
return
@"刚刚"
;
}
else
if
(minutes < 60){
return
[
NSString
stringWithFormat:
@"%ld分钟前"
,(
long
)minutes];
}
else
if
(hours < 24){
return
[
NSString
stringWithFormat:
@"%ld小时前"
,(
long
)hours];
}
else
if
(day < 30){
return
[
NSString
stringWithFormat:
@"%ld天前"
,(
long
)day];
}
else
if
(month < 12){
NSDateFormatter
* df =[[
NSDateFormatter
alloc]init];
df.dateFormat =
@"M月d日"
;
NSString
* time = [df stringFromDate:lastDate];
return
time;
}
else
if
(yers >= 1){
NSDateFormatter
* df =[[
NSDateFormatter
alloc]init];
df.dateFormat =
@"yyyy年M月d日"
;
NSString
* time = [df stringFromDate:lastDate];
return
time;
}
return
@""
;
}
NSLog
(
@"\n\nresult: %@"
, [Utilities timeIntervalFromLastTime:
@"2015年12月8日 15:50"
lastTimeFormat:
@"yyyy年MM月dd日 HH:mm"
ToCurrentTime:
@"2015/12/08 16:12"
currentTimeFormat:
@"yyyy/MM/dd HH:mm"
]);
iOS之计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等的更多相关文章
- java计算时间差, 日期差小结
转自:https://blog.csdn.net/sy793314598/article/details/79544796 1.java 7中的日历类Calendar Calendar类使用其静态的g ...
- JS实现——计算两日期之差
在网上找了个js实现的,根据相差天数计算日期和根据两个日期计算相差多少天的示例和代码: 根据相差天数计算日期: 距离: 年 月 日 相差: 天 (输入负数则往前计算) 日期是: 根据日期计算相差天 ...
- IOS 公共类-MyDateUtil 日期处理Util
IOS 公共类-MyDateUtil 日期处理Util 此为处理日期的公共类.适用IOS6+ .h文件: #import <Foundation/Foundation.h> //适用 IO ...
- C#面向对象思想计算两点之间距离
题目为计算两点之间距离. 面向过程的思维方式,两点的横坐标之差,纵坐标之差,平方求和,再开跟,得到两点之间距离. using System; using System.Collections.Gene ...
- 用Java计算某个日期100天后的日期
用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017 ...
- .net 计算当前时间距离今晚00:00:00还有多少分多少秒
string dateDiff = null; DateTime DateTime1 = DateTime.Now; //第二天的0点00分00秒 DateTime DateTime2 = DateT ...
- IOS开发之格式化日期时间
IOS开发之格式化日期时间(转) 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFor ...
- js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。
1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=d ...
- java 根据经纬度坐标计算两点的距离算法
/** * @Desc 根据经纬度坐标计算两点的距离算法<br> * @Author yangzhenlong <br> * @Data 2018/5/9 18:38 */ p ...
随机推荐
- Tomcat shutdown执行后无法退出进程问题排查及解决
问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事.而且我内心总觉得这可能是tomcat像nginx一 ...
- Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)
Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect) [TOC] 这两个方法的区别 View.ge ...
- JavaScript中Math对象的方法介绍
1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ...
- 关于全局ID,雪花(snowflake)算法的说明
上次简单的说一下:http://www.cnblogs.com/dunitian/p/6041745.html#uid C#版本的国外朋友已经封装了,大家可以去看看:https://github.co ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- 前端学HTTP之报文首部
前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 ...
- 搭建属于自己的VIP积分系统(1)
很久没写博客了,如果有写得不好的地方,还请多多见谅. 架构设计 需求分析 这篇文章主要是介绍此VIP系统的基础架构.说实在的,我其实对 架构方面也不是很懂,我这套框架 还是拿别人的东西改过来的,并不是 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- iOS UITableView 与 UITableViewController
很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...
- Linux主机上使用交叉编译移植u-boot到树莓派
0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...