將時間轉化成今天、昨天和前天格式
阿新 • • 發佈:2019-01-05
開發中偶爾有這樣的需求,參考一下吧!#pragma mark - 將時間轉化為今天、昨天、前天 - (NSString *)formatting { NSDateFormatter *outputFormatter= [[NSDateFormatter alloc] init]; [outputFormatter setLocale:[NSLocale currentLocale]]; [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //str to nsdate NSDate *strDate = [outputFormatter dateFromString:self]; //修正8小時的差時 NSTimeZone *zone = [NSTimeZone systemTimeZone]; NSInteger interval = [zone secondsFromGMTForDate: strDate]; NSDate *endDate = [strDate dateByAddingTimeInterval: interval]; //NSLog(@"endDate:%@",endDate); NSString *lastTime = [self compareDate:endDate]; NSLog(@"lastTime = %@",lastTime); return lastTime; } -(NSString *)compareDate:(NSDate *)date { NSTimeInterval secondsPerDay = 24 * 60 * 60; //修正8小時之差 NSDate *date1 = [NSDate date]; NSTimeZone *zone = [NSTimeZone systemTimeZone]; NSInteger interval = [zone secondsFromGMTForDate: date1]; NSDate *localeDate = [date1 dateByAddingTimeInterval: interval]; //NSLog(@"nowdate=%@\nolddate = %@",localeDate,date); NSDate *today = localeDate; NSDate *yesterday,*beforeOfYesterday; //今年 NSString *toYears; toYears = [[today description] substringToIndex:4]; yesterday = [today dateByAddingTimeInterval: -secondsPerDay]; beforeOfYesterday = [yesterday dateByAddingTimeInterval: -secondsPerDay]; // 10 first characters of description is the calendar date: NSString *todayString = [[today description] substringToIndex:10]; NSString *yesterdayString = [[yesterday description] substringToIndex:10]; NSString *beforeOfYesterdayString = [[beforeOfYesterday description] substringToIndex:10]; NSString *dateString = [[date description] substringToIndex:10]; NSString *dateYears = [[date description] substringToIndex:4]; NSString *dateContent; if ([dateYears isEqualToString:toYears]) {//同一年 //今 昨 前天的時間 NSString *time = [[date description] substringWithRange:(NSRange){11,5}]; //其他時間 NSString *time2 = [[date description] substringWithRange:(NSRange){5,11}]; if ([dateString isEqualToString:todayString]){ dateContent = [NSString stringWithFormat:@"今天 %@",time]; return dateContent; } else if ([dateString isEqualToString:yesterdayString]){ dateContent = [NSString stringWithFormat:@"昨天 %@",time]; return dateContent; }else if ([dateString isEqualToString:beforeOfYesterdayString]){ dateContent = [NSString stringWithFormat:@"前天 %@",time]; return dateContent; }else{ return time2; } }else{ return dateString; } }