在項目中日期的顯示經常會當天的顯示時分,當月的顯示日時和分,以此類推,難免會涉及到日期的比較,下面介紹一下日期比較的兩種方法
比較日期有兩種方法
一種是通過系統的NSCalendar類實現
NSString * date = @"2016-10-12 13:12:12";
//創建日期格式
NSDateFormatter * dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
//字符串轉為日期
NSDate *showDate =[dateFormat dateFromString:date];
//創建日歷類
NSCalendar * calendar = [NSCalendar currentCalendar];
//比較現在的時間和
NSDateComponents * components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:showDate toDate:[NSDate date] options:NSCalendarWrapComponents];
if (components.year) {
NSLog(@"同一年");
}else{
if (components.month) {
NSLog(@"同一月");
}else{
NSLog(@"不同月");
}
}
另一種方法是:
利用時間的實例方法timeIntervalSinceDate:就會得出兩個時間相差的秒數,再計算相差的天數
NSString * date = @"2016-10-13 9:04:00"; //創建日期格式 NSDateFormatter * dateFormat = [[NSDateFormatter alloc]init]; [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; //字符串轉為日期 NSDate *showDate =[dateFormat dateFromString:date]; NSDate * nowDate = [NSDate date]; NSTimeInterval timeInterval = [nowDate timeIntervalSinceDate:showDate]; NSLog(@"分差=%f",timeInterval/60.00);//分差 NSLog(@"時差=%f",timeInterval/3600.00);//時差 NSLog(@"天數差=%f",timeInterval/3600.00/24);//天數差,如果是0說明是當天,否則不是當天