判断是否为今年、是否为今天、是否为昨天,比较当前时间和from时间的差值

来源:互联网 发布:淘宝清空收藏夹 编辑:程序博客网 时间:2024/05/17 22:18

效果图:

时间处理样式:

1:创建NSDate的扩展类

  NSDate+LMExtension.h

//  Created by limin on 16/6/21.//  Copyright © 2016年 limin. All rights reserved.//#import <Foundation/Foundation.h>@interface NSDate (LMExtension)/** 比较当前时间和from时间的差值*/-(NSDateComponents *)deltaFrom:(NSDate *)from;/** 是否为今年*/-(BOOL)isThisYear;/** 是否为今天*/-(BOOL)isToday;/** 是否为昨天*/-(BOOL)isYesterday;@end

NSDate+LMExtension.m

////  Created by limin on 16/6/21.//  Copyright © 2016年 limin. All rights reserved.//#import "NSDate+LMExtension.h"@implementation NSDate (LMExtension)-(NSDateComponents *)deltaFrom:(NSDate *)from{    //日历    NSCalendar *calendar = [NSCalendar currentCalendar];    //比较时间    NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:from toDate:self options:0];    return comps;}-(BOOL)isThisYear{    NSDate *now = [NSDate date];    //日历    NSCalendar *calendar = [NSCalendar currentCalendar];    NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:now];    NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];        return nowYear == selfYear;    }/** 方法1:判断是否为今天*/-(BOOL)isToday{    //日历    NSCalendar *calendar = [NSCalendar currentCalendar];    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;        NSDateComponents *nowComps = [calendar components:unit fromDate:[NSDate date]];    NSDateComponents *selfComps = [calendar components:unit fromDate:self];        return nowComps.year == selfComps.year && nowComps.month == selfComps.month && nowComps.day == selfComps.day;}/** 方法2:判断是否为今天*///-(BOOL)isToday//{//    NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];//    dateformatter.dateFormat = @"yyyy-MM-dd";//    //    NSString *nowString = [dateformatter stringFromDate:[NSDate date]];//    NSString *selfString = [dateformatter stringFromDate:self];//    return [nowString isEqualToString:selfString];//}/** 判断是否为昨天*/-(BOOL)isYesterday{    NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];    dateformatter.dateFormat = @"yyyy-MM-dd";    NSDate *nowDate = [dateformatter dateFromString:[dateformatter stringFromDate:[NSDate date]]];    NSDate *selfDate = [dateformatter dateFromString:[dateformatter stringFromDate:self]];        NSCalendar *calendar = [NSCalendar currentCalendar];    NSDateComponents *comps = [calendar components: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];    return comps.year == 0 && comps.month == 0 && comps.day == 1;}@end
原文地址链接:http://blog.csdn.net/leemin_ios/article/details/51881853    点击打开链接
2: 时间赋值.

//Label赋值创建时间[self setupCreateTime:topicsModel.create_time];

setupCreateTime: 方法实现

#pragma mark - 时间处理/** *self.createTimeLabel:时间标签 *今天: [ 1分钟内:刚刚 1小时内:xx分钟前 其他:xx小时前 ] *昨天:几点几分 *其他:6-13 19:12 *不是今年:去年:年份2014-5-8 18:40:30 */-(void)setupCreateTime:(NSString *)create_time{        //设置日期格式    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";    //创建时间    NSDate *createDate = [formatter dateFromString:create_time];            if (createDate.isThisYear) {//今年                if (createDate.isToday) {//今天                        //当前时间            NSDate *nowDate = [NSDate date];            //比较时间            NSDateComponents *comps = [nowDate deltaFrom:createDate];            if (comps.hour >= 1) {                //时间差距>=1小时                [self.createTimeLabel setText:[NSString stringWithFormat:@"%zd小时前",comps.hour]];            }else if (comps.minute >= 1)            {                //时间差距<1小时,>=1分钟               [self.createTimeLabel setText:[NSString stringWithFormat:@"%zd分钟前",comps.minute]];            }else            {// 时间差距<1分钟                [self.createTimeLabel setText:@"刚刚"];            }                                }else if (createDate.isYesterday)//昨天        {            formatter.dateFormat = @"昨天 HH:mm:ss";            [self.createTimeLabel setText:[formatter stringFromDate:createDate]];        }else        {//其他            formatter.dateFormat = @"MM-dd HH:mm:ss";            [self.createTimeLabel setText:[formatter stringFromDate:createDate]];        }    }else//非今年    {        [self.createTimeLabel setText:create_time];    }    }






0 0
原创粉丝点击