Tom Shen
Tom Shen

Reputation: 2028

NSDateFormatter dateFromString returns nil on improper date

I have a date that looks like this

2015-11-07T14:02:00Z

I am trying to convert this into an NSDate instance using this method:

- (NSDate *)formatDateString:(NSString *)string {
    static NSDateFormatter *formatter = nil;
    if (formatter == nil) {
        formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-mm-ddThh:mm:ssZ"];
        [formatter setDateStyle:NSDateFormatterMediumStyle];
        [formatter setTimeStyle:NSDateFormatterMediumStyle];
    }
    return [formatter dateFromString:string];
}

But this returns me nil.

Thanks

Upvotes: 1

Views: 46

Answers (1)

Ozgur Vatansever
Ozgur Vatansever

Reputation: 52173

Date format seems to be incorrect:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

Also, you need to remove the following lines because you already specified all date components in above.

[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterMediumStyle];

Putting all together:

- (NSDate *)formatDateString:(NSString *)string {
    static NSDateFormatter *formatter = nil;
    if (formatter == nil) {
        formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    }
    return [formatter dateFromString:string];
}

--

[formatter dateFromString:@"2015-11-07T14:02:00Z"];

Upvotes: 1

Related Questions