2015-09-27 47 views
0

这是我收到一个JSON字符串值需要转换为NSDate的:转换JSON字符串的NSDate发生错误

2017-04-08T13:51:00.000 + 03:00

这里是我转换成NSDate的:

+ (NSDate *)stringDateToDate:(NSString *)aStringDate 
{ 
    NSDate *date = nil; 

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

    date = [dateFormat dateFromString:aStringDate]; 
    NSLog(@"nsdate: %@", date); 

    return date; 
} 

至于导致它记录:

nsdate :(空)

似乎日期格式不正确。如何解决这个问题?

回答

2

使用下日期格式串

"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" 

其使用ZZZZZ为时区/区域/时间偏移 - 例如+03:00
SSS小数秒 - 例如123
和最重要的使用秒和其分数之间.代替:

由于rmaddy用于校正的SZ数量,以满足所需的确切输入

注意您可以使用SZ而不是SSSZZZZZ,因为解析器足够聪明,无论如何都可以解析它。如果你想从日期创建一个字符串,但是你需要上面的日期格式化字符串。可以在Unicode部分中找到关于日期格式字符串

"yyyy-MM-dd'T'HH:mm:ss.SZ" 

enter image description here

更多细节为
Date Format Patterns

+0

感谢您的支持回答。它现在有效 – Sergio

+0

@Sergio欢迎您! – luk2302

+0

@ luk2302从技术上说,它是从UTC时间的偏移量,而不是时区。 –

-1

Ž在结束对所述时间偏移

+ (NSDate *)stringDateToDate:(NSString *)aStringDate 
{ 
    NSDate *date = nil; 

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

    date = [dateFormat dateFromString:aStringDate]; 
    NSLog(@"nsdate: %@", date); 

    return date; 
} 
+0

的偏差更容易,因为有额外的空间。嗯 –

+1

而仍然不行,因为你有:而不是。秒和分数之间。 – luk2302

+0

补给它,没有看到。 –