首页 > 其他 > 详细

微博发布时间处理

时间:2015-12-02 18:12:52      阅读:274      评论:0      收藏:0      [点我收藏+]

/**

 1.今年

     1> 今天

     * 1分内: 刚刚

     * 1~59分内:xx分钟前

     * 大于60分钟:xx小时前

     

     2> 昨天

     * 昨天 xx:xx

     

     3> 其他

     * xx-xx xx:xx

 

 2.非今年

 1> xxxx-xx-xx xx:xx

 */

-(NSString *)created_at{

    

    // _created_at == Thu Oct 16 17:06:25 +0800 2014 现在得到的string

    // dateFormat == EEE MMM dd HH:mm:ss Z yyyy

    // NSString --> NSDate

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    

    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

    

    // 设置日期格式(声明字符串里面每个数字和单词的含义)

    

    // E:星期几

    // M:月份

    // d:几号(这个月的第几天)

    // H:24小时制的小时

    // m:分钟

    // s:

    // y:

    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";

    //微博创建的日期

    NSDate *createDate = [fmt dateFromString:_created_at];

    //当前时间

    NSDate *now = [NSDate date];

    //日历对象

    NSCalendar *calendar = [NSCalendar currentCalendar];

    // NSCalendarUnit枚举代表想获得哪些差值

    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour |NSCalendarUnitMinute |NSCalendarUnitSecond;

    

    //计算两个日期之间的差值

    NSDateComponents *cmps = [calendar components:unit fromDate:createDate toDate:now options:0];

    

    //MyLog(@"createDate-%@ now-%@ cmps-%@", createDate, now, cmps);

    

    if ([createDate isThisYear]) {//今年

        if ([createDate isYesterday]) {//昨天

            fmt.dateFormat = @"昨天 HH:mm";

            return [fmt stringFromDate:createDate];

        }else if([createDate isToday]){

            

            if (cmps.hour >= 1) {

                return [NSString stringWithFormat:@"%ld小时前",(long)cmps.hour];

            }else if(cmps.minute >= 1){

                

                return [NSString stringWithFormat:@"%ld分钟前",(long)cmps.minute];

                

            }else{

                

                return @"刚刚";

            }

            

        }else{

            

            fmt.dateFormat = @"MM-dd HH:mm";

            return [fmt stringFromDate:createDate];

            

        }

    }else{//不是今年,往年的时间显示

        

        fmt.dateFormat = @"yyyy-MM-dd HH:mm";

        return  [fmt stringFromDate:createDate];

        

    }

    

    

}

NSDate分类

-(BOOL)isThisYear{

    

    NSCalendar *calendar = [NSCalendar currentCalendar];

    

    NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:self];

    

    NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];

    

    return dateCmps.year = nowCmps.year;

    

}

 

-(BOOL)isYesterday{

    

    NSDate *now = [NSDate date];

    // date ==  2014-04-30 10:05:28 --> 2014-04-30 00:00:00

    // now == 2014-05-01 09:22:10 --> 2014-05-01 00:00:00

 

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"yyyy-MM-dd";

    

        // 2014-04-30

    NSString *dateStr = [fmt stringFromDate:self];

    // 2014-10-18

 

    NSString *nowStr = [fmt stringFromDate:now];

    // 2014-10-30 00:00:00

    NSDate *date = [fmt dateFromString:dateStr];

        // 2014-10-18 00:00:00

    now = [fmt dateFromString:nowStr];

    

    NSCalendar *calendar = [NSCalendar currentCalendar];

    

    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

    

    NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];

    

    return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;

    

}

 

-(BOOL)isToday{

    

    NSDate *now = [NSDate date];

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"yyy-MM-dd";

    

    NSString *dateStr = [fmt stringFromDate:self];

    NSString *nowStr = [fmt stringFromDate:now];

    

    return [dateStr isEqualToString:nowStr];

    

    

}

 

微博发布时间处理

原文:http://www.cnblogs.com/zinder/p/5013510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!