If I use the following code:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];
NSDate *myDate = [dateFormatter dateFromString:@"2010-01-28T15:22:23.863"];
NSLog(@"%@", [dateFormatter stringFromDate:myDate]);
It is successfully converted to a Date
object, however, I cannot seem to format it any other way than yyyy-MM-dd'T'HH:mm
, i.e. what gets logged is 2010-01-28T15:22:23
If I change the dateFormat to say [dateFormatter setDateFormat:@"yyyy-MMMM-d'T'HH:mm"];
the Date object is null...
So my ultimate question is how to format an ISO8601 timestamp from a SQL database to use, for instance, NSDateFormatterMediumStyle
to return "January 1, 2010"?
I have a similiar but slightly more complex problem, and I've found a very simple solution!
The problem:
My incoming ISO8601 dates look like this: 2006-06-14T11:06:00+02:00
They have a timezone offset at the end.
The solution: Use Peter Hosey's ISO8601DateFormatter which you can download from here.
ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];
NSDate *theDate = [formatter dateFromString:dateString];
[formatter release], formatter = nil;
and
ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];
NSString *dateString = [formatter stringFromDate:[twitch dateTwitched]];
[formatter release], formatter = nil;