整体逻辑
//时间的比较需要 可以使用日历 得到两个时间的具体信息
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;
}