0

我收到一个JSON 编码的日期字符串,如下所示:2012-08-01T11:53:58+02:00。我想将它转换为NSDate对象,但是我的转换不起作用。据我所知,它应该是 ISO 8601 格式,但我对最后的时区感到很困惑,因为它之间有一个冒号。

到目前为止,我的代码如下所示:

 /*
  * format the time
  */
 NSDateFormatter *isoDateFormatter = [NSDateFormatter new];
 [isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
 NSDate *dateTmp = [isoDateFormatter dateFromString:[data objectForKey:@"datetimeServer"]];
 /*
  * log the output
  */
 [isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
 NSLog(@"Server time is %@", [isoDateFormatter stringFromDate:dateTmp]);

为了防止无法使用的答案,日期肯定在那里,我在日志中检查了:)。但是服务器时间等于(null),所以转换不能正常工作。

谢谢您的回答。

再见,菲利普

4

1 回答 1

-1

根据您以 JSON 编码接收的日期字符串(如您所述),如下所示: 2012-08-01T11:53:58+02:00 我担心日期字符串的格式不正确,所以我建议你做一些字符串操作。

//NSMutableString *string=[[NSMutableString alloc]initWithString:@"2012-08-01T11:53:58+02:00"];

NSMutableString *string=[[NSMutableString alloc]initWithString:[data objectForKey:@"datetimeServer"]]; 
NSRange range = [string rangeOfString:@"+" options:NSBackwardsSearch]; 
[string insertString:@"GMT" atIndex:range.location];

NSDateFormatter *isoDateFormatter = [[NSDateFormatter alloc]init];
[isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSDate *dateTmp = [isoDateFormatter dateFromString:string];
NSLog(@"Server time is %@", dateTmp);

[isoDateFormatter setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss"];    
NSLog(@"Server time is %@", [isoDateFormatter stringFromDate:dateTmp]);

希望这可以帮助你

于 2012-08-01T11:27:14.277 回答