Skip to content

Instantly share code, notes, and snippets.

@megimix
Created June 1, 2016 08:09
Show Gist options
  • Save megimix/bb1f4793107808a96f4d0a8720901726 to your computer and use it in GitHub Desktop.
Save megimix/bb1f4793107808a96f4d0a8720901726 to your computer and use it in GitHub Desktop.
// 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