- (NSString *)timeSince {
NSDateFormatter * rfc3339DateFormatter;
NSLocale * enUSPOSIXLocale;
NSDate * date;
// Convert the RFC 3339 date time string to an NSDate.
rfc3339DateFormatter = [[[NSDateFormatter alloc] init] autorelease];
enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[rfc3339DateFormatter setLocale:enUSPOSIXLocale];
[rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
[rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
date = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];
NSUInteger desiredComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *elapsedTimeUnits = [[NSCalendar currentCalendar] components:desiredComponents
fromDate:date
toDate:[NSDate date]
options:0];
if ( [elapsedTimeUnits year] > 1 )
return [NSString stringWithFormat:@"%d years ago", [elapsedTimeUnits year]];
else if ( [elapsedTimeUnits year] > 0 )
return [NSString stringWithFormat:@"%d year ago", [elapsedTimeUnits year]];
else if ( [elapsedTimeUnits month] > 1 )
return [NSString stringWithFormat:@"%d months ago", [elapsedTimeUnits month]];
else if ( [elapsedTimeUnits month] > 0 )
return [NSString stringWithFormat:@"%d month ago", [elapsedTimeUnits month]];
else if ( [elapsedTimeUnits day] > 1 )
return [NSString stringWithFormat:@"%d days ago", [elapsedTimeUnits day]];
else if ( [elapsedTimeUnits day] > 0 )
return [NSString stringWithFormat:@"%d day ago", [elapsedTimeUnits day]];
else if ( [elapsedTimeUnits hour] > 1 )
return [NSString stringWithFormat:@"%d hours ago", [elapsedTimeUnits hour]];
else if ( [elapsedTimeUnits hour] > 0 )
return [NSString stringWithFormat:@"%d hour ago", [elapsedTimeUnits hour]];
else if ( [elapsedTimeUnits minute] > 1 )
return [NSString stringWithFormat:@"%d minutes ago", [elapsedTimeUnits minute]];
else if ( [elapsedTimeUnits minute] > 0 )
return [NSString stringWithFormat:@"%d minute ago", [elapsedTimeUnits minute]];
else if ( [elapsedTimeUnits second] > 1 )
return [NSString stringWithFormat:@"%d seconds ago", [elapsedTimeUnits second]];
else if ( [elapsedTimeUnits second] > 0 )
return [NSString stringWithFormat:@"%d second ago", [elapsedTimeUnits second]];
else
return @"Moments ago";
}