iOS-发帖时间优化显示

作者: 我是大龙啊 | 来源:发表于2016-03-12 11:14 被阅读216次

发帖时间分类


  • 今年
    • 今天
      • 大于1小时 (xxx小时之前)
      • 小于1小时,大于1分钟 (xxx分钟之前)
      • 其它(1分钟内) (刚刚发布)
    • 昨天 (昨天 17:25)
    • 其它 (月-日 时:分:秒)
  • 不是今年 ( (年-月-日 时:分:秒)

创建NSDate+LQLExtension

  • NSDate+LQLExtension.h
  #import <Foundation/Foundation.h>
  @interface NSDate (LQLExtension)

//比较from与self的时间差值
- (NSDateComponents *)deltaFrom:(NSDate *)from;
/**
 *  是否为今年
 */
- (BOOL)isThisYear;
/**
 *  是否为今天
 */
- (BOOL)isToday;
/**
 *  是否为昨天
 */
- (BOOL)isYesterday;
@end
  • NSDate+LQLExtension.m

#import "NSDate+LQLExtension.h"

@implementation NSDate (LQLExtension)

- (NSDateComponents *)deltaFrom:(NSDate *)from {
   
    //日历
    NSCalendar *calender = [NSCalendar currentCalendar];
    //比较时间
    NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |
    NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    return [calender components:unit fromDate:from toDate:self options:0];
   




}

//[NSDate date] 当前时间

- (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 {
    
    
    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];
   
  //比较时间
    NSDateComponents *cmps = [calendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear 
                            fromDate:selfDate toDate:nowDate options:0];
    
    return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;
    
}

@end


帖子模型

  • LQLTopic.h
/** 发帖时间*/
@property (nonatomic, copy) NSString *create_time;
  • LQLTopic.m

- (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小时,大于等于1分钟
                return [NSString stringWithFormat:@"%zd分钟前",cmps.minute];
            }else {//1分钟内
                return @"刚刚";
            }
            
        }else if (create.isYesterday){//昨天 
             fmt.dateFormat = @"昨天 HH:mm:ss";
            return [fmt stringFromDate:create];
            
        }else {//其它
            fmt.dateFormat = @"MM-dd HH:mm:ss";
            return [fmt stringFromDate:create];
        }
    }else{//不是今年   
        return _create_time;
    }    
}

相关文章

  • iOS-发帖时间优化显示

    发帖时间分类 今年今天大于1小时 (xxx小时之前)小于1小时,大于1分钟 (xxx分钟之前)其它(1分钟内) ...

  • iOS-性能优化深入探究

    iOS-性能优化深入探究 iOS-性能优化深入探究

  • iOS-性能优化深入探究

    iOS-性能优化深入探究 上图是几种时间复杂度的关系,性能优化一定程度上是为了降低程序执行效率减低时间复杂度。如下...

  • Android时间显示优化类

    时间显示优化

  • iOS-优化

    1、用ARC管理内存2、在正确的地方使用 reuseIdentifier3、尽量把views设置为完全不透明4、避...

  • iOS-优化

    一.画面卡顿优化 知识铺垫:cpu执行的阶段1.Layout阶段:UI布局、文本计算2.Display阶段:绘制,...

  • 多平台显示IP属地,这些账号“露馅”了…

    日前,有微博网友发帖曝光一批冒充北上广城市资讯的博主,虽然这些账号显示在北上广吃喝玩乐,但其IP显示发帖地址却在湖...

  • 超图产品需求研究

    绘制耗时优化 地图的绘制耗时是指显示和渲染数据所需要的时间。想优化地图的绘制耗时需要提升地图要素的显示效率,可从优...

  • 发帖发帖发帖

    1.早起 2上班开会 3.培训 4.下周计划:50条帖子上升到80条 业绩目标5万 5.一下午再发帖发帖发帖 6....

  • 待看文章

    内存相关 【基本功】深入剖析Swift性能优化 渲染相关 关于iOS离屏渲染的深入研究 线程相关 iOS-线程安全

网友评论

    本文标题:iOS-发帖时间优化显示

    本文链接:https://www.haomeiwen.com/subject/hjexlttx.html