/** * 計算上次日期距離現在多久 * * @param lastTime 上次日期(需要和格式對應) * @param format1 上次日期格式 * @param currentTime 最近日期(需要和格式對應) * @param format2 最近日期格式 * * @return 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"
]);
輸出結果如下:
![](http://code4app.com/data/attachment/forum/201605/27/175323rwa1mls5gmlui3zr.png)