// // UMComTools.m // UMCommunity // // Created by luyiyuan on 14/10/9. // Copyright (c) 2014年 Umeng. All rights reserved. // #import "UMComResouceDefines.h" /*2.4版本的时间显示*/ static NSCalendar* g_UMCalendar = nil; static NSCalendar* g_UMCurrentCalendar = nil; NSString* const g_UMNullDateFormat = @""; NSString* const g_UMFullDateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString* const g_UMTodayDateFormat = @"HH:mm"; NSString* const g_UMCurYearDateFormat = @"MM-dd"; NSString* const g_UMBeforeCurYearDateFormat = @"yy-MM-dd"; NSString* const g_UMAfterCurYearDateFormat = @"yy-MM-dd"; NSString* const g_UMYesteday = @"昨天"; NSString* createTimeString(NSString * create_time) { if (![create_time isKindOfClass:[NSString class]] || create_time.length == 0) { return g_UMNullDateFormat; } NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; if (!g_UMCalendar) { g_UMCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; } [dateFormatter setCalendar:g_UMCalendar]; [dateFormatter setDateFormat:g_UMFullDateFormat]; NSDate *createDate= [dateFormatter dateFromString:create_time]; if (createDate == nil) { return g_UMNullDateFormat; } if (!g_UMCurrentCalendar) { g_UMCurrentCalendar = [NSCalendar currentCalendar]; NSTimeZone *zone = [NSTimeZone systemTimeZone]; if (zone) { g_UMCurrentCalendar.timeZone = zone; } } //当前的时间 NSDate *today = [NSDate date]; NSDateComponents *todayComponents = [g_UMCurrentCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:today]; NSDateComponents *createComponents = [g_UMCurrentCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:createDate]; if (!todayComponents || !createComponents) { return g_UMNullDateFormat; } //计算创建时间的段一个月的最大天数 NSRange createDateMaxDaysInCurMonth = [g_UMCurrentCalendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:createDate]; if (createDateMaxDaysInCurMonth.length == NSNotFound) { //如果计算不出来当前的最大值,说明字符串给出的时间格式或者日期有问题 return g_UMNullDateFormat; } NSString* reslutString = g_UMNullDateFormat; NSInteger yearsOffsetSinceNow = createComponents.year - todayComponents.year; if (yearsOffsetSinceNow > 0) { //创建时间大于当前的时间,此处就直接显示日期(yy-MM-dd) [dateFormatter setDateFormat:g_UMAfterCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } else if (yearsOffsetSinceNow == 0) { //在当年 NSInteger monthOffsetSinceNow = createComponents.month - todayComponents.month; if (monthOffsetSinceNow > 0) { //创建时间大于当前的时间,此处就直接显示日期(yy-MM-dd) [dateFormatter setDateFormat:g_UMAfterCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } else if (monthOffsetSinceNow == 0) { //在当月 NSInteger dayOffsetSinceNow = createComponents.day - todayComponents.day; if (dayOffsetSinceNow > 0) { //创建时间大于当前的时间,此处就直接显示日期(yy-MM-dd) [dateFormatter setDateFormat:g_UMAfterCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } else if (dayOffsetSinceNow == 0) { //今天(HH:mm) [dateFormatter setDateFormat:g_UMTodayDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } else if (dayOffsetSinceNow == -1) { //昨天(昨天 HH:mm) [dateFormatter setDateFormat:g_UMTodayDateFormat]; NSString* tempString = [dateFormatter stringFromDate:createDate]; if (!tempString) { return reslutString; } //2.5版的时间函数显示(昨天 HH:mm) //reslutString = [NSString stringWithFormat:@"昨天%@",tempString]; //2.6版本的时间函数显示 (昨天) reslutString = g_UMYesteday; } else { //今年(MM-dd) [dateFormatter setDateFormat:g_UMCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } } else { if ((monthOffsetSinceNow == -1) && (createDateMaxDaysInCurMonth.length == createComponents.day) && todayComponents.day == 1) { //昨天(昨天 HH:mm) [dateFormatter setDateFormat:g_UMTodayDateFormat]; NSString* tempString = [dateFormatter stringFromDate:createDate]; if (!tempString) { return reslutString; } //2.5版的时间函数显示(昨天 HH:mm) //reslutString = [NSString stringWithFormat:@"昨天%@",tempString]; //2.6版本的时间函数显示 (昨天) reslutString = g_UMYesteday; } else { //今年(MM-dd) [dateFormatter setDateFormat:g_UMCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } } } else { //在去年或者以前的某一天 if ((yearsOffsetSinceNow == -1) && (createComponents.day == createDateMaxDaysInCurMonth.length) && (createComponents.month == 12)&&(todayComponents.month == 1) && (todayComponents.day == 1)) { //昨天(昨天 HH:mm) [dateFormatter setDateFormat:g_UMTodayDateFormat]; NSString* tempString = [dateFormatter stringFromDate:createDate]; if (!tempString) { return reslutString; } //2.5版的时间函数显示(昨天 HH:mm) //reslutString = [NSString stringWithFormat:@"昨天%@",tempString]; //2.6版本的时间函数显示 (昨天) reslutString = g_UMYesteday; } else { //往年(yy-MM-dd) [dateFormatter setDateFormat:g_UMBeforeCurYearDateFormat]; reslutString = [dateFormatter stringFromDate:createDate]; } } return reslutString; } NSString *countString(NSNumber *count) { if (![count isKindOfClass:[NSNumber class]]) { return @""; } NSInteger displayCount = [count integerValue]; NSString *countString = @""; if (displayCount >= 10000) { NSInteger highestNum = displayCount/10000; if (displayCount < 11000) { countString = [NSString stringWithFormat:@"1W"]; }else if (displayCount < 100000){ NSInteger secondNum = (displayCount - 10000 *highestNum)/1000; if (secondNum == 0) { countString = [NSString stringWithFormat:@"%ldW",highestNum]; }else{ countString = [NSString stringWithFormat:@"%ld.%ldW",highestNum,secondNum]; } }else if (displayCount < 100000000){ countString = [NSString stringWithFormat:@"%ldW",highestNum]; }else{ countString = [NSString stringWithFormat:@"9999W"]; } } else if (displayCount > 0){ countString = [NSString stringWithFormat:@"%ld",displayCount]; } else{ countString = @"0"; } return countString; } extern NSString *distanceString(NSNumber *distance) { NSInteger displayCount = [distance integerValue]; NSString *countString = @""; if (displayCount >= 1000) { NSInteger highestNum = displayCount/1000; if (displayCount < 10000){ NSInteger secondNum = (displayCount - 1000 *highestNum)/100; countString = [NSString stringWithFormat:@"%ld.%ldkm",highestNum,secondNum]; }else{ countString = [NSString stringWithFormat:@"10km+"]; } }else{ countString = [NSString stringWithFormat:@"%ldm",displayCount]; } return countString; }