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

整体逻辑

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

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;
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Objective-C 代码输出一个月份的日历: ```objc // 获取当前日期 NSDate *today = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:today]; NSInteger year = [components year]; NSInteger month = [components month]; // 设置日期格式化对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"MMMM yyyy"]; // 获取当前月份第一天的日期 NSDateComponents *firstDayComponents = [[NSDateComponents alloc] init]; [firstDayComponents setYear:year]; [firstDayComponents setMonth:month]; [firstDayComponents setDay:1]; NSDate *firstDayOfMonth = [calendar dateFromComponents:firstDayComponents]; // 获取当前月份的天数 NSRange daysInMonth = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:firstDayOfMonth]; // 输出日历 NSString *header = [dateFormatter stringFromDate:firstDayOfMonth]; NSLog(@"%@", header); NSLog(@"Su Mo Tu We Th Fr Sa"); NSDateComponents *currentDateComponents = [[NSDateComponents alloc] init]; [currentDateComponents setDay:1]; [currentDateComponents setMonth:month]; [currentDateComponents setYear:year]; NSInteger weekday = [calendar component:NSCalendarUnitWeekday fromDate:firstDayOfMonth]; for (NSInteger i = 1; i < weekday; i++) { printf(" "); } for (NSInteger i = 1; i <= daysInMonth.length; i++) { printf("%2ld ", (long)i); if (i == daysInMonth.length) { printf("\n"); break; } [currentDateComponents setDay:i + 1]; NSDate *currentDate = [calendar dateFromComponents:currentDateComponents]; NSInteger currentWeekday = [calendar component:NSCalendarUnitWeekday fromDate:currentDate]; if (currentWeekday == 1) { printf("\n"); } } ``` 该代码会输出当前月份的日历,例如: ``` May 2021 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ``` 你可以根据需要修改年月来输出不同月份的日历

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值