-(NSString*)format:(NSString*)string{
//输入的时间格式
NSDateFormatter *inputFormatter= [[NSDateFormatter alloc] init];
[inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] ];
[inputFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate*inputDate = [inputFormatter dateFromString:string];
//输出的时间格式
NSDateFormatter *outputFormatter= [[NSDateFormatter alloc] init];
[outputFormatter setLocale:[NSLocale currentLocale]];
[outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSDate-->NSString
NSString*str= [outputFormatter stringFromDate:inputDate];
//NSString-->NSDate
NSDate*strDate = [outputFormatter dateFromString:str];
//转换为当前时区,修正8小时的差时
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSIntegerinterval = [zone secondsFromGMTForDate: strDate];
NSDate*endDate = [strDate dateByAddingTimeInterval: interval];
NSString*lastTime = [self compareDateWith:endDate];
returnlastTime;
}
//时间的比较判断
-(NSString*)compareDateWith:(NSDate*)date{
//一天内的时间
NSTimeInterval secondsPerDay =24*60*60;
//获取当前时间,并修正8小时的差时
NSDate*date1 = [NSDatedate];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date1];
NSDate*localeDate = [date1 dateByAddingTimeInterval: interval];
//今天、昨天
NSDate*today = localeDate;
NSDate*yesterday = [today dateByAddingTimeInterval: -secondsPerDay];
//今年、今天,昨天对应的NSString
NSString*toYears = [[today description] substringToIndex:4];
NSString*todayString = [[today description]substringToIndex:10];
NSString*yesterdayString = [[yesterday description]substringToIndex:10];
//输入的时间对应的日期和年限字符串
NSString*dateString = [[date description]substringToIndex:10];
NSString*dateYears = [[date description]substringToIndex:4];
NSString*dateContent;//要返回的字符串内容
if([dateYearsisEqualToString:toYears]) {//同一年 内时间格式:(19 March)
NSDateFormatter*outputFormatter= [[NSDateFormatter alloc]init];
[outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:CMSGetStringWithKeyFromTable(@"Language_LocaleIdentifier", @"Localizable")]];
[outputFormatter setDateFormat:@"d MMMM"];
NSString*time2 = [outputFormatter stringFromDate:date];;
if([dateString isEqualToString:todayString]){//今天
dateContent = [NSString stringWithFormat:@"%@",CMSGetStringWithKeyFromTable(@"Today",@"Localizable") ];
returndateContent;
}elseif([dateString isEqualToString:yesterdayString]){//昨天
dateContent = [NSString stringWithFormat:@"%@",CMSGetStringWithKeyFromTable(@"Yesterday",@"Localizable")];
returndateContent;
} else{
if ([self compareDateFromeWorkTimeToNow:date]) { //一周之内除了今天昨天前天之外显示星期
return[self weekdayStringFromDate:date];
}else{//一周之外的显示日期
return time2;
}
}
}else{//不是同一年
NSDateFormatter*outputFormatter= [[NSDateFormatteralloc]init];
[outputFormatter setLocale:[NSLocale currentLocale]];
[outputFormatter setDateFormat:@"d MMMM yyyy"];
NSString*time3 = [outputFormatter stringFromDate:date];
returntime3;
}
}
//传入时间字符与今天比较是否在一周之内
- (BOOL)compareDateFromeWorkTimeToNow:(NSDate*)timeStr{
//获得当前时间
NSDate*currentDate = [NSDate date];
NSCalendar*calendar = [NSCalendar currentCalendar];
NSDateComponents*comps=[calendar components:NSCalendarUnitDayfromDate:timeStrtoDate:currentDateoptions:0];
if(comps.day<7) {
returnYES;
}else{
returnNO;
}
}
//传入时间返回星期几
- (NSString*)weekdayStringFromDate:(NSDate*)inputDate{
NSArray*weekdays = [NSArrayarrayWithObjects: [NSNullnull],
CMSGetStringWithKeyFromTable(@"Sunday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Monday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Tuesday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Wednesday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Thursday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Friday",@"Localizable"),
CMSGetStringWithKeyFromTable(@"Saturday",@"Localizable"),nil];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSTimeZone*timeZone = [[NSTimeZone alloc]initWithName:@"Asia/Shanghai"];
[calendar setTimeZone: timeZone];
NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
NSDateComponents*theComponents = [calendar components:calendarUnitfromDate:inputDate];
return[weekdays objectAtIndex:theComponents.weekday];
}
/*!
* @breif 将带有时区的时间转换为某个固定时区时间
* @param localDateString 需要转换的时间
* @param formatStr 转换后的的时间格式
*/
+(NSString*)getUTCFormatDate:(NSString*)localDateString formatStr:(NSString*)formatStr{
//根据已有的dateFormatter转换需要的NSDate
NSDateFormatter*localdateFormatter = [[NSDateFormatter alloc]init];
[localdateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSDate*localDate = [localdateFormatter dateFromString:localDateString];
//转换为东八区的时间
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT+0800"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:formatStr];
NSString*dateString = [dateFormatter stringFromDate:localDate];
returndateString;
}