项目用到了从服务器返回距离1970年多少秒的发布的数据,然后计算多少当前时间距离消息发布的时间,1分钟以内显示几秒前,1小时以内显示几分钟前,1天以内显示几小时前,超过一天则显示具体日期,这是需求。
为此我做了一个 NSDate的扩展类,分享给大家
#import "NSDate+Extention.h"
@implementation NSDate (Extention)`
+ (NSString *)nowFromDateExchange:(int)oldTime {//oldTime 为服务器返回的发布消息时间距离1970年多少秒
// 计算现在距1970年多少秒
NSDate *date = [NSDate date];
NSTimeInterval currentTime= [date timeIntervalSince1970];
// 计算现在的时间和发布消息的时间时间差
double timeDiffence = currentTime - oldTime;
// 根据秒数的时间差的不同,返回不同的日期格式
if (timeDiffence <= 60) {
return [NSString stringWithFormat:@"%.0f 秒前",timeDiffence];
}else if (timeDiffence <= 3600){
return [NSString stringWithFormat:@"%.0f 分钟前",timeDiffence / 60];
}else if (timeDiffence <= 86400){
return [NSString stringWithFormat:@"%.0f 小时前",timeDiffence / 3600];
}else if (timeDiffence <= 604800){
return [NSString stringWithFormat:@"%.0f 天前",timeDiffence / 3600 /24];
}else{
// 返回具体日期
NSDate *oldTimeDate = [NSDate dateWithTimeIntervalSince1970:oldTime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [formatter stringFromDate:oldTimeDate];
}
}
@end
再此附上 github 地址:https://github.com/D-james/NSDate-Extention