Created
June 1, 2016 08:09
-
-
Save megimix/bb1f4793107808a96f4d0a8720901726 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Last active bace on nsdate | |
+ (NSString * __nonnull)sellerLastActiveStringWithSellerLastActivDate:(NSDate * __nullable)sellerLastActive | |
isSellerOnline:(BOOL)isSellerOnline { | |
NSString *timeString = @""; | |
if (sellerLastActive == nil) { | |
//do nothing | |
} | |
else if (isSellerOnline) { | |
timeString = @"Online"; | |
} | |
else { | |
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; | |
NSDateComponents *components = [gregorianCalendar components: (NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSCalendarUnitSecond | NSCalendarUnitMonth ) | |
fromDate:sellerLastActive | |
toDate:[NSDate date] | |
options:0]; | |
NSString *(^oneTimeOrSStringBlock)(NSString * prefixString, | |
BOOL shouldAddPrefix, | |
NSString * timeString, | |
NSInteger number) = ^NSString *(NSString * prefixString, | |
BOOL shouldAddPrefix, | |
NSString * timeString, | |
NSInteger number) { | |
if (number == 0) { | |
return @""; | |
} | |
else if (number == 1) { | |
return [NSString stringWithFormat:@"%@One %@",(shouldAddPrefix ? prefixString : @""), timeString]; | |
} | |
else { | |
return [NSString stringWithFormat:@"%@%ld %@s",(shouldAddPrefix ? prefixString : @""), number, timeString]; | |
} | |
}; | |
if (components.month > 0) { | |
timeString = @"More than a month ago"; | |
} | |
else if (components.day > 7) { | |
timeString = @"More than a week ago"; | |
} | |
else if (components.day > 1) { | |
timeString = [NSString stringWithFormat:@"%@%@ ago", oneTimeOrSStringBlock(@"", NO, @"day", components.day), | |
oneTimeOrSStringBlock(@" ,", YES, @"hour", components.hour)]; | |
} | |
else { | |
timeString = [NSString stringWithFormat:@"%@%@ ago", oneTimeOrSStringBlock(@"", NO, @"hour", components.hour), | |
oneTimeOrSStringBlock(@" ,", components.hour > 0, @"minute", components.minute)]; | |
} | |
if ((components.month == 0 && components.day == 0 && components.hour == 0 && components.minute == 0) ){ | |
timeString = @"Online"; | |
} | |
} | |
return timeString; | |
//http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year-months-days-hours-minutes-an | |
// NSLog(@"timestring = %@", timeString); | |
// NSLog(@"year %ld", [components year]); | |
// NSLog(@"month %ld", [components month]); | |
// NSLog(@"day %ld", [components day]); | |
// NSLog(@"hour %ld", [components hour]); | |
// NSLog(@"minute %ld", [components minute]); | |
// NSLog(@"second %ld", [components second]); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment