NSDateFormatter returns null for specific dates
date-format, ios, nsdateformatter, null
Solution
I will answer my own question just to register in case of someone get the same problem:
I added to my date formatter `[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];` AND `[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];`.
So, my new code is:
- (void) debugTest:(NSString *)dateStr{
NSLog(@"String: %@", dateStr);
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *dateObj = [df dateFromString: dateStr];
NSLog(@"Date: %@", dateObj);
}
I think the problem was related to the device's configuration, setting the two properties fixed the problem.
Problem
I'm having a problem with the `NSDateFormatter`. It is returning `null` for some specific dates. I did this function to debug the case: ``` - (void) debugTest:(NSString *)dateStr{ NSLog(@"String: %@", dateStr); NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"yyyy-MM-dd"]; NSDate *dateObj = [df dateFromString: dateStr]; NSLog(@"Date: %@", dateObj); } ``` This is my log output for some dates: ``` String: 2012-10-18 Date: 2012-10-18 03:00:00 +0000 String: 2012-10-19 Date: 2012-10-19 03:00:00 +0000 String: 2012-10-20 Date: 2012-10-20 03:00:00 +0000 String: 2012-10-21 Date: (null) String: 2012-10-22 Date: 2012-10-22 02:00:00 +0000 String: 2012-10-23 Date: 2012-10-23 02:00:00 +0000 ``` Why it is returning null only for the date `2012-10-21`? I did other tests with the interval from `2011-10-01 to 2014-11-01` and the following dates returned `null`: ``` 2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19 ``` Is this some kind of bug? I am doing something wrong?