NSString to NSDate

Minar picture Minar · Aug 30, 2009 · Viewed 44.7k times · Source

I got a string that contains the current date by using this :

NSString *date = [[NSDate date] description];

At a different point I want to retrieve the date from this string and I used the following code:

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
[dateFormatter setDateFormat:@"YYYY-MM-DD HH:MM:SS ±HHMM"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:<NSString containing date>];

I am getting dateFromString as nil 0x0. What am I doing wrong?

Answer

Nicholas Riley picture Nicholas Riley · Aug 30, 2009

You can't invent format string syntax and expect it to work; you need to actually use a documented format. (Seriously, "MM" meaning "month", "minute" and "GMT offset minutes" all at the same time?)

As the documentation points out, the 10.4 formatters use Unicode format strings.

Try "yyyy-MM-dd HH:mm:ss ZZZ" instead.

Also, Objective-C source is ASCII. Don't put characters like ± in there and expect it to work in any context; instead, use strings files.