+ (NSString*)getMessageDateString:(NSDate*)messageDate andNeedTime:(BOOL)needTime
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"YYYY/MM/dd HH:mm"];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit fromDate:messageDate];
NSDate *msgDate = [cal dateFromComponents:components];
components = [cal components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit fromDate:[NSDate date]];
NSDate *today = [cal dateFromComponents:components];
// 1.今天显示格式 11:11
if([today isEqualToDate:msgDate]){
formatter.dateFormat = @"HH:mm";
return [formatter stringFromDate:messageDate];
}
// 2. 昨天显示格式 昨天
components.day -= 1;
NSDate *yestoday = [cal dateFromComponents:components];
if([yestoday isEqualToDate:msgDate]){
NSString *ystdStr;
if (needTime) {
if ([IMSSCommon isChinese]) {
ystdStr = @"昨天";
} else {
ystdStr = @"Ystd";
}
formatter.dateFormat = @"HH:mm";
} else {
formatter.dateFormat = @"";
ystdStr = HWLocalizedString(@"昨天", nil);
}
return [NSString stringWithFormat:@"%@ %@", ystdStr,[formatter stringFromDate:messageDate]];
}
// 3. 一星期内 星期X
for (int i = 1; i <= 6; i++) {
components.day -= 1;
NSDate *nowdate = [cal dateFromComponents:components];
if([nowdate isEqualToDate:msgDate]){
// 目的 周期格式EEEE 中英文转换不过来
if ([IMSSCommon isChinese]) {
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
} else {
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
}
if (needTime) {
formatter.dateFormat = @"EEE HH:mm";
} else {
formatter.dateFormat = @"EEEE";
}
return [formatter stringFromDate:messageDate];
}
}
// 4. 一星期前 2015/1/10
while (1) {
components.day -= 1;
NSDate *nowdate = [cal dateFromComponents:components];
if ([nowdate isEqualToDate:msgDate]) {
if (needTime) {
formatter.dateFormat = @"MM-dd HH:mm";
} else {
formatter.dateFormat = @"YYYY-MM-dd";
}
return [formatter stringFromDate:messageDate];
break;
}
}
}