设为首页 加入收藏

TOP

iOS时间个性化设置设置(一)
2017-10-13 10:23:56 】 浏览:5919
Tags:iOS 时间 个性化 设置
现在在很多项目中,不会直接显示时间,很多时候都是显示“刚刚”,”XX分钟前”,等等字样,那么他们是怎么实现的呢 ?

1.新建一个NSDate的类目:NSDate+XMGExtension
NSDate+XMGExtension.h 文件

#import <Foundation/Foundation.h>

@interface NSDate (XMGExtension)
-(NSDateComponents *)deltaFrom:(NSDate *)from;
/** 是否是今年 */
-(BOOL)isThisYear;
/** 是否是今天 */
-(BOOL)isToday;
/** 是否是昨天 */
-(BOOL)isYesterday;
@end


NSDate+XMGExtension.m


#import "NSDate+XMGExtension.h"

@implementation NSDate (XMGExtension)
-(NSDateComponents *)deltaFrom:(NSDate *)from{
   
    //    日历
    NSCalendar *calendar = [NSCalendar currentCalendar];
   
   
    //    比较时间
    NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitMonth |NSCalendarUnitYear | 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  nowYear == selfYear;

}


//-(BOOL)isToday{
//    //    日历
//    NSCalendar *calendar = [NSCalendar currentCalendar];
//   
//    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
//   
//    NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];
//   
//    NSDateComponents *selfCmps = [calendar components:unit fromDate:self];
//
//    return nowCmps.year == selfCmps.year
//    && nowCmps.month == selfCmps.month
//    && nowCmps.day == selfCmps.day;
//   
//
//}

-(BOOL)isToday{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
   
    NSString *nowString = [fmt stringFromDate:[NSDate date]];
    NSString *selfString = [fmt stringFromDate:self];
   
    return [nowString isEqualToString:selfString];
}

-(BOOL)isYesterday{

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
   
    NSDate *nowDate = [fmt dateFromString:[fmt stringFromDate:[NSDate date]]];
    NSDate *selfDate = [fmt dateFromString:[fmt stringFromDate:self]];
                  
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

    NSDateComponents *cmps = [calendar components:unit fromDate:selfDate toDate:nowDate options:0];
   
    return cmps.year == 0
    && cmps.month == 0
    && cmps.day == 1;
   
   
   
}

@end


在model中使用 create_time getter方法


XMGTopic.h文件
/** 发帖时间 */
@property(nonatomic,copy)NSString *create_time;

XMGTopic.m文件
#import "XMGTopic.h"

@implementation XMGTopic
-(NSString *)create_time{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *create = [fmt dateFromString:_create_time];
   
    if (create.isThisYear) { //今年
        if (create.isToday) {   //今天
            NSDateComponents *cmps = [[NSDate date] deltaFrom:create];
            if (cmps.hour>=1) { //时间差距>=1小时
                return [NSString stringWithFormat:@"%zd小时前",cmps.hour];
            }else if(cmps.minute>=1){ //时间差距>=1分分钟
                return [NSString stringWithFormat:@"%zd分钟前",cm
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【代码笔记】iOS-水波效果 下一篇chisel(安装)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目