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?

Original source

Related problems