Many a times, in an iPhone application, you might need to format the date relative to today. This code snippet will help you do it.


+ (NSString *) formattedDateRelativeToNow:(NSDate *)date
{
		NSDateFormatter *mdf = [[NSDateFormatter alloc] init];
	[mdf setDateFormat:@"yyyy-MM-dd"];
	NSDate *midnight = [mdf dateFromString:[mdf stringFromDate:date]];
	[mdf release];
 
	NSInteger dayDiff = (int)[midnight timeIntervalSinceNow] / (60*60*24);	
	NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];	
 
	if(dayDiff == 0) 
		[dateFormatter setDateFormat:@"'Today, 'h':'mm aaa"];
	else if(dayDiff == -1) 
		[dateFormatter setDateFormat:@"'Yesterday, 'h':'mm aaa"];
	else if(dayDiff == -2) 
		[dateFormatter setDateFormat:@"MMMM d', Two days ago'"]; 	
	else if(dayDiff > -7 && dayDiff <= -2) 
		[dateFormatter setDateFormat:@"MMMM d', This week'"]; 
	else if(dayDiff > -14 && dayDiff <= -7) 
		[dateFormatter setDateFormat:@"MMMM d'; Last week'"]; 
	else if(dayDiff >= -60 && dayDiff <= -30) 
		[dateFormatter setDateFormat:@"MMMM d'; Last month'"]; 
	else if(dayDiff >= -90 && dayDiff <= -60) 
		[dateFormatter setDateFormat:@"MMMM d'; Within last three months'"]; 
	else if(dayDiff >= -180 && dayDiff <= -90) 
		[dateFormatter setDateFormat:@"MMMM d'; Within last six months'"]; 
	else if(dayDiff >= -365 && dayDiff <= -180) 
		[dateFormatter setDateFormat:@"MMMM d, YYYY'; Within this year'"]; 
	else if(dayDiff < -365) 
		[dateFormatter setDateFormat:@"MMMM d, YYYY'; A long time ago'"];
 
	return [dateFormatter stringFromDate:date];
}

Link back if you liked it…


–Mugunth

If you enjoyed this post, make sure you subscribe to my RSS feed!

Related posts:

  1. bit.ly wrapper for Objective-C/iPhone Continuing from my part 1, in this section, we will...
  2. XCode Tip: Objective-C Singleton Class Template I have a habit of creating Singleton pattern classes for...
  3. iPhone Tutorial: Scheduling Local Notifications using a Singleton class In iOS 4, Apple introduced a new way to send...
  4. iPhone Tutorial: How to send In-App SMS Officially, iPhone OS 4 is out of NDA and I...
  5. iPhone Tutorial: Better way to check capabilities of iOS devices The iPhone OS started off with a single device, the...

2 Responses to “Formatting Dates relative to Now – Objective C (iPhone)”

Leave a Reply