两个时间进行比较 使用NSCalendar 日历类进行对比

本文详细阐述了如何使用Objective-C编程语言进行时间比较、日期判断及格式转换,包括判断两个时间是否在同一年、是否为昨天或今天,以及如何通过日期格式转换计算日期差。文章还提供了具体的代码实现,涵盖了日期格式的转换、日期比较和时间差计算等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整体逻辑

 //时间的比较需要 可以使用日历 得到两个时间的具体信息

NSDateComponents *comp = [lendar components:unit fromDate:date];
NSDateComponents *lastComp = [lendar components:unit fromDate:lastDate];


//判断两个时间 是否 在同一年  获取两个时间的具体信息  比较年是否一样

 NSCalendar *lendar = [NSCalendar currentCalendar];
  NSDateComponents *comp = [lendar components:NSCalendarUnitYear fromDate:[NSDate date]];
  NSDateComponents *lastComp = [lendar components:NSCalendarUnitYear fromDate:date];
  return comp.year == lastComp.year;

//判断是昨天还是今天 ,先讲时间格式转化成只有年月日 ,再将两个时间做比较 ,当年 月都等于0,日差一天是 返回的是昨天 (其实这里转不转年月日的格式都可以,只要确保 年月是相同的  日 差一天就得来)

NSDate *newDate = [NSDate date];
    
    //1.将格式转化成只有年月日
    NSDateFormatter *matter = [[NSDateFormatter alloc]init];
    matter.dateFormat = @"yyyy-mm-dd";
    //转换成字符串
    NSString *dateStr = [matter stringFromDate:date];
    NSString *newstr = [matter stringFromDate:newDate];
    
    //2.将字符串再转换成时间  计算年月日 就可以来
    date = [matter dateFromString:dateStr];
    newDate = [matter dateFromString:newstr];
    
    //3.比较两个时间的具体差
    NSCalendar *lendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit =  NSCalendarUnitYear | NSCalendarUnitMonth  | NSCalendarUnitDay;
    NSDateComponents *comp = [lendar components:unit fromDate:date toDate:newDate options:0];
    
    return comp.year == 0 && comp.month == 0 && comp.day == 1;


//判断是不是今天
 
    NSCalendar *lendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit =  NSCalendarUnitYear | NSCalendarUnitMonth  | NSCalendarUnitDay;
    NSDateComponents *comp = [lendar components:unit fromDate:[NSDate date] toDate:date options:0];
    return comp.year == 0 && comp.month == 0 && comp.day == 0;







具体代码实现

// * 将字符串转换成时间

    NSString *str = @"2014/12/1 12:13:34";
    
    NSDateFormatter *matter = [[NSDateFormatter alloc]init];
    
    matter.dateFormat = @"yyyy/MM/dd HH:mm:ss";
    
    NSDate *lastDate = [matter dateFromString:str];
    
    //* 现在的时间
    NSDate *date = [NSDate date];
    
    
    //1.使用日历对象 (比较两个时间) 创建一个日历
    NSCalendar *lendar = [NSCalendar currentCalendar];
    
    //2.获取想要的差值 年-月-日-时-分-秒
    NSCalendarUnit unit =  NSCalendarUnitYear | NSCalendarUnitMonth  | NSCalendarUnitDay  | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ;
    
    
    //3.得到两个具体时间的年月日 时分秒
    NSDateComponents *comp = [lendar components:unit fromDate:date];
    NSDateComponents *lastComp = [lendar components:unit fromDate:lastDate];
    
    //4.比较两个时间的时间差
    NSDateComponents *poor = [lendar components:unit fromDate:date toDate:lastDate options:nil];


//判断是不是同一年

- (BOOL)poorYear:(NSDate*)date{


    NSCalendar *lendar = [NSCalendar currentCalendar];
    NSDateComponents *comp = [lendar components:NSCalendarUnitYear fromDate:[NSDate date]];
    NSDateComponents *lastComp = [lendar components:NSCalendarUnitYear fromDate:date];
    return comp.year == lastComp.year;


}



//判断是否为昨天

- (BOOL)poorDay:(NSDate*)date{
    NSDate *newDate = [NSDate date];
    
    //1.将格式转化成只有年月日
    NSDateFormatter *matter = [[NSDateFormatter alloc]init];
    matter.dateFormat = @"yyyy-mm-dd";
    //转换成字符串
    NSString *dateStr = [matter stringFromDate:date];
    NSString *newstr = [matter stringFromDate:newDate];
    
    //2.将字符串再转换成时间  计算年月日 就可以来
    date = [matter dateFromString:dateStr];
    newDate = [matter dateFromString:newstr];
    
    //3.比较两个时间的具体差
    NSCalendar *lendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit =  NSCalendarUnitYear | NSCalendarUnitMonth  | NSCalendarUnitDay;
    NSDateComponents *comp = [lendar components:unit fromDate:date toDate:newDate options:0];
    
    return comp.year == 0 && comp.month == 0 && comp.day == 1;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值