iOS之计算上次日期距离现在多久, 如 xx 小时前xx 分钟前等
Posted Jaycee麦子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 分钟前等的主要内容,如果未能解决你的问题,请参考以下文章