Codesnipp.it Social Code Sharing

pj4533

TimeSince function for rfc3339 dates

by pj4533 on May 19, 2011

- (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"; }

Can't see the comments? Please login first :)