How to format Facebook/Twitter dates (from the JSON feed) in Objective-C
here is what i have working for Twitter:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; //Wed Dec 01 17:08:03 +0000 2010 [df setDateFormat:@"eee MMM dd HH:mm:ss ZZZZ yyyy"]; NSDate *date = [df dateFromString:[[tweets objectAtIndex: storyIndex] objectForKey: TWITTER_CREATED_AT_JSON_KEY]]; [df setDateFormat:@"eee MMM dd yyyy"]; NSString *dateStr = [df stringFromDate:date];
where tweets
is an NSMutableArray
filled with NSDictionary
objects, storyIndex
being the row int value (in the tableview), and TWITTER_CREATED_AT_JSON_KEY
being a constant NSString
with value created_at
. use the dateStr wherever you wish to display the date
and Facebook:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; //2010-12-01T21:35:43+0000 [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; NSDate *date = [df dateFromString:[[facebook objectForKey:FACEBOOK_POST_CREATED_TIME_JSON_KEY] stringByReplacingOccurrencesOfString:@"T" withString:@""]]; [df setDateFormat:@"eee MMM dd, yyyy hh:mm"]; NSString *dateStr = [df stringFromDate:date];
I give you the solution to parse Facebook api date time:
parser = [[NSDateFormatter alloc] init];[parser setTimeStyle:NSDateFormatterFullStyle];[parser setFormatterBehavior:NSDateFormatterBehavior10_4];[parser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"];
Enjoy !
eBuildy, french Web Agency
@binnyb's answer is perfect for Objective-C; for those looking to do the same thing using Swift, here's a translated version of his answer:
For the Twitter Date:
var df = NSDateFormatter() //Wed Dec 01 17:08:03 +0000 2010 df.dateFormat = "eee MMM dd HH:mm:ss ZZZZ yyyy" var date = df.dateFromString(twitterDateString) df.dateFormat = "eee MMM dd yyyy" var dateStr = df.stringFromDate(date!)
For the Facebook Date:
var df = NSDateFormatter() //Wed Dec 01 17:08:03 +0000 2010 df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ" var date = df.dateFromString(facebookDateString) df.dateFormat = "eee MMM dd yyyy" var dateStr = df.stringFromDate(date!)
where twitterDateString
and facebookDateString
are the date strings obtained from their respective APIs.