Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSDateFormatter returning nil in OS 4.0

I had the following code working on on OS 3.x

NSString *stringDate = @"2010-06-21T20:06:36+00:00"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSDate *theDate = [dateFormatter dateFromString:stringDate]; NSLog(@"%@",[dateFormatter stringFromDate:theDate]); 

but now in the newest xcode 3.2.3 under the iOS4 simulator, the varialble theDate is nil.

I have looked through the class reference and do not see anything deprecated or implemented differently for iOS4 with these specific methods. What did i leave out?

like image 721
AtomRiot Avatar asked Jun 22 '10 15:06

AtomRiot


1 Answers

I found out it works if you do it this way (see below). The key is using the method: - [NSDateFormatter getObjectValue:forString:range:error:]

instead of

-[NSDateFormatter dateFromString]

The complete code:

+ (NSDate *)parseRFC3339Date:(NSString *)dateString  {     NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];     [rfc3339TimestampFormatterWithTimeZone setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];     [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];      NSDate *theDate = nil;     NSError *error = nil;      if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {         NSLog(@"Date '%@' could not be parsed: %@", dateString, error);     }      [rfc3339TimestampFormatterWithTimeZone release];     return theDate; } 
like image 91
Werner Altewischer Avatar answered Oct 12 '22 06:10

Werner Altewischer