将时间戳转换为时间,并输出“刚刚”、“昨天”、“XX小时前”等

来源:互联网 发布:进驻淘宝多少费用 编辑:程序博客网 时间:2024/05/21 17:27
我们在开发iOS程序中需要有接口,有时候借口提供的时间是NSNumber类型的并且是时间戳。比如说:1447375370 其实这个意思就是1970年0点到当前时间的秒数。看到这里,大概我们心里就有数了。为了方便编程中使用,我们写成NSString的类目(Category),这样可以通过以下方式直接调用即可:
NSString *resultStr = [NSString stringWithTimeStamp:<#此处需要NSNumber类型的时间戳#>];

好了,上代码
NSString+TimeString.h

#import <Foundation/Foundation.h>@interface NSString (TimeString)/**将时间戳转换为时间*/+ (NSString *)stringWithTimeStamp:(NSNumber *)timeStamp;@end

NSString+TimeString.m

#define anHour  3600#define aMinute 60#import "NSString+TimeString.h"@implementation NSString (TimeString)+ (NSString *)stringWithTimeStamp:(NSNumber *)timeStamp {    //获取当前时间    NSDate *currentDate = [NSDate date];    //将当前时间转化为时间戳    NSTimeInterval currentDateStamp = [currentDate timeIntervalSince1970] + 8 * anHour;    //将传入的参数转化为时间戳    double dateStamp = [timeStamp doubleValue] + 8 * anHour;    //计算时间间隔,即当前时间减去传入的时间    double interval = currentDateStamp - dateStamp;    //获取当前时间的小时单位(24小时制)    NSDateFormatter *formatter = [NSDateFormatter new];    [formatter setDateFormat:@"H"];    int nowHour = [[formatter stringFromDate:currentDate] intValue];    //获取当前时间的分钟单位    NSDateFormatter *minFormatter = [NSDateFormatter new];    [minFormatter setDateFormat:@"m"];    int nowMinute = [[minFormatter stringFromDate:currentDate] intValue];    //今天0点的时间戳    double todayZeroClock = currentDateStamp - anHour * nowHour - aMinute * nowMinute;    //时间格式化,为输出做准备    NSDateFormatter *outputFormat = [NSDateFormatter new];    [outputFormat setDateFormat:@"M月d日"];    //进行条件判断,满足不同的条件返回不同的结果    if (interval < 30 * aMinute) {        //在30分钟之内        return @"刚刚";    } else if (todayZeroClock - dateStamp > 24 * anHour) {        //已经超过两天以上        return [outputFormat stringFromDate:[NSDate dateWithTimeIntervalSince1970:dateStamp]];    } else if (todayZeroClock - dateStamp > 0) {        //已经超过一天(昨天)        return @"昨天";    } else if (interval < anHour) {        //一个小时之内        return [NSString stringWithFormat:@"%.0f分钟前", (currentDateStamp - dateStamp) / aMinute];    } else {        //今天之内        return [NSString stringWithFormat:@"%.0f小时前", (currentDateStamp - dateStamp) / anHour];    }}@end
0 1
原创粉丝点击