Вопрос

I have a date string in JSON format that looks like this: 2014-02-07T00:00:00+08:00

And I'm trying to convert it to NSDate with format MM/dd/yyyy.

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];

NSDate *date = [dateFormat dateFromString:datestring];
NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
[newDateFormatter setDateFormat:@"MM/dd/yyyy"];

NSString *newString = [newDateFormatter stringFromDate:date];
NSLog(@"Date: %@, formatted date: %@", date, newString);

But the result is nil. What's wrong?

Это было полезно?

Решение

The correct date format is:

[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssxxx"];

or

[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];

See: ICU Formatting Dates and Times

NSString *datestring = @"2014-02-07T00:00:00+08:00";

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:sszzz"];
NSDate *date = [dateFormat dateFromString:datestring];
NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
[newDateFormatter setDateFormat:@"MM/dd/yyyy"];
NSString *newString = [newDateFormatter stringFromDate:date];
NSLog(@"Date: %@, formatted date: %@", date, newString);

NSLog output:

Date: 2014-02-06 16:00:00 +0000, formatted date: 02/06/2014

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top