How can i convert the following date "Sun Jul 17 07:48:34 +0000 2011"
to the following format "2011-07-17 07:48:34"?
I used NSDateFormatter
as shown below but it didnt work. It gives null as a result.
NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init];
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[objDateFormatter dateFromString:sDate];
You've got your Date Format wrong for the style of Date you are passing in. Here is a document explaining the different modifiers: Date Format Patterns
To parse the Date "Sun Jul 17 07:48:34 +0000 2011", you'd need a Format like so:
[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
To get it into the following format: "2011-07-17 07:48:34", here is the full code:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
NSDate *date = [dateFormatter dateFromString:sDate];
// Convert to new Date Format
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *newDate = [dateFormatter stringFromDate:date];
If sDate is your string that's in the format "Sun Jul 17 07:48:34 +0000 2011", you have to convert that into a NSDate. Then, you can use a second NSDateFormatter to convert this date into your desired format "yyyy-MM-dd HH:mm:ss".
If you need to figure out the string needed to convert, this site has a great reference:
http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
e.g. "Sun Jul 17 07:48:34 +0000 2011" can be parsed with
[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"];
As a bit of advice, non-standard dates like "Jul" (should be July) can make problems here. It's faster to just convert the needed parts in plain C, with strftime().
See the reference: http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm
You can then convert the unix timestamp back in a NSDate with
[NSDate dateWithTimeIntervalSince1970:]
Using C for date/time parsing is usually up to 10x faster. NSDateFormatter is a slow dog.