码迷,mamicode.com
首页 > 移动开发 > 详细

IOS 日期的简洁格式展示

时间:2017-06-18 22:41:21      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:yesterday   date   options   mda   integer   思考   elf   ==   带来   

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

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

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

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

方便实用。

以及简单的实际应用。

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

.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];
    }
}
技术分享

 

IOS 日期的简洁格式展示

标签:yesterday   date   options   mda   integer   思考   elf   ==   带来   

原文地址:http://www.cnblogs.com/wuyuxin/p/7045580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!