Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone: Convert date string to a relative time stamp

I've got a timestamp as a string like:

Thu, 21 May 09 19:10:09 -0700

and I'd like to convert it to a relative time stamp like '20 minutes ago' or '3 days ago'.

What's the best way to do this using Objective-C for the iPhone?

like image 558
Gilean Avatar asked May 24 '09 02:05

Gilean


1 Answers

-(NSString *)dateDiff:(NSString *)origDate {     NSDateFormatter *df = [[NSDateFormatter alloc] init];     [df setFormatterBehavior:NSDateFormatterBehavior10_4];     [df setDateFormat:@"EEE, dd MMM yy HH:mm:ss VVVV"];     NSDate *convertedDate = [df dateFromString:origDate];     [df release];     NSDate *todayDate = [NSDate date];     double ti = [convertedDate timeIntervalSinceDate:todayDate];     ti = ti * -1;     if(ti < 1) {         return @"never";     } else  if (ti < 60) {         return @"less than a minute ago";     } else if (ti < 3600) {         int diff = round(ti / 60);         return [NSString stringWithFormat:@"%d minutes ago", diff];     } else if (ti < 86400) {         int diff = round(ti / 60 / 60);         return[NSString stringWithFormat:@"%d hours ago", diff];     } else if (ti < 2629743) {         int diff = round(ti / 60 / 60 / 24);         return[NSString stringWithFormat:@"%d days ago", diff];     } else {         return @"never";     }    } 
like image 192
Gilean Avatar answered Sep 27 '22 21:09

Gilean