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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With