首先我要解釋一下標題的意義,日期的簡潔格式展示,之所以簡介,是因為讓人一目瞭然,不需要思考是什麼時候。 在詳細一點就是我們在微信朋友圈中 所看到的時間格式。 例如:剛剛 -幾分鐘前-幾小時前等等。 今天這裡帶來的是一個簡單的類別。 方便實用。 以及簡單的實際應用。 先看看一看類別是什麼樣子的 .h ...
首先我要解釋一下標題的意義,日期的簡潔格式展示,之所以簡介,是因為讓人一目瞭然,不需要思考是什麼時候。
在詳細一點就是我們在微信朋友圈中 所看到的時間格式。
例如:剛剛 -幾分鐘前-幾小時前等等。
今天這裡帶來的是一個簡單的類別。
方便實用。
以及簡單的實際應用。
先看看一看類別是什麼樣子的
.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]; } }