我有这个代码在iOS 6中很好用于将这个Rails json提供的日期字符串转换为NSDate(2012-12-11T08:28:16-08:00):
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"];
return [formatter dateFromString:string];
但是它在iOS 5上不起作用。我找不到任何好的资源来在5中转换该日期。感谢任何帮助。
答案 0 :(得分:0)
iOS 6.0使用UTS版本tr35-25进行格式化。使用5'Z作为时区解析类似-08:00的内容。即:
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
iOS 5和5.1使用版本tr35-19,它没有为-08:00指定任何内容,尽管3'Z用于类似-0800的内容。
更改'Z的工作量吗?
您可以在此处找到格式规范:
答案 1 :(得分:0)
在解析字符串之前,您需要在结束时从时区中删除冒号。
对我来说比较容易,因为我正在解析+01:00但你可以使用
[dateString componentsSeparatedByString:@"-"]
获取一组组件,最后一个是时区,删除冒号
[timeZoneString stringByReplacingOccurrencesOfString:@":" withString:@""]
然后将所有组件追加到一起,并在每个组件之间替换“ - ”。
答案 2 :(得分:0)
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
NSString *clearedString = [railsDateString stringByReplacingOccurrencesOfString:@":" withString:@"" options:0 range:NSMakeRange(22, 1)];
NSDate *date = [dateFormat dateFromString:clearedString];
一个清洁的詹姆斯P版