IOS 日期的简洁格式展示

来源:互联网 发布:nginx conf配置详解 编辑:程序博客网 时间:2024/06/10 22:02

首先我要解释一下标题的意义,日期的简洁格式展示,之所以简介,是因为让人一目了然,不需要思考是什么时候。

在详细一点就是我们在微信朋友圈中 所看到的时间格式。

例如:刚刚 -几分钟前-几小时前等等。

今天这里带来的是一个简单的类别。

方便实用。

以及简单的实际应用。

先看看一看类别是什么样子的

.h

复制代码
#import <Foundation/Foundation.h>@interface NSDate (CXExtension)-(NSDateComponents *)dateFrom:(NSDate *)from;-(BOOL)isThisYear;-(BOOL)isToday;-(BOOL)isYesterday;@end
复制代码

.m

复制代码
#import "NSDate+CXExtension.h"@implementation NSDate (CXExtension)-(NSDateComponents *)dateFrom:(NSDate *)from{    //日历    NSCalendar *calendar = [NSCalendar currentCalendar];        NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;        return [calendar components:unit fromDate:from toDate:self options:0 ];}//判断是否为今年-(BOOL)isThisYear{        NSCalendar * calendar = [NSCalendar currentCalendar];        NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];    NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];        return selfYear == nowYear;    }//判读是否为今天-(BOOL)isToday{        NSDateFormatter * formatter = [[NSDateFormatter alloc]init];        formatter.dateFormat = @"yyyy-MM-dd";        NSString * nowDate = [formatter stringFromDate:[NSDate date]];    NSString * selfDate = [formatter stringFromDate:self];        return [nowDate isEqualToString:selfDate];    }//判断是否为昨天-(BOOL)isYesterday{        NSDateFormatter * formatter = [[NSDateFormatter alloc]init];        formatter.dateFormat = @"yyyy-MM-dd";        NSDate * nowDate = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];    NSDate * selfdate = [formatter dateFromString:[formatter stringFromDate:self]];        NSCalendar * calendar = [NSCalendar currentCalendar];        NSDateComponents * unit = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:selfdate toDate:nowDate options:0];    return unit.year == 0 && unit.month == 0 && unit.day == 1;    }@end
复制代码

下面的实力所展现的效果:

当时间为去年时 显示全部时间格式

当时间为今年时分为以下情况

当时间为今天是判断具体时间

产生几小时前

几分钟前

刚刚的显示格式

当时间为昨天是 显示昨天以及时分秒

当时间既不是今天又不是昨天时

显示除年以外的所有时间格式

复制代码
-(NSString *)create_time{    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";    NSDate * creat = [formatter dateFromString:_create_time];    if (creat.isThisYear) {                if (creat.isToday) {                        NSDateComponents * unit = [creat dateFrom:creat];            if (unit.hour > 1) {                return [NSString stringWithFormat:@"%zd小时前",unit.hour];            }else if (unit.minute > 1){                return [NSString stringWithFormat:@"%zd分钟前",unit.minute];            }else{                return @"刚刚";            }        }else if (creat.isYesterday){            formatter.dateFormat = @"昨天 HH:mm:ss";            return[formatter stringFromDate:creat];        }else{            formatter.dateFormat = @"MM-dd HH:mm:ss";            return [formatter stringFromDate:creat];        }    }    else{        return[formatter stringFromDate:creat];    }}
复制代码