将Rails日期字符串转换为NSDate

时间:2013-04-03 19:08:29

标签: ios nsdateformatter

我有这个代码在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中转换该日期。感谢任何帮助。

3 个答案:

答案 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的工作量吗?

您可以在此处找到格式规范:

UTS #35-19

UTS #35-25

答案 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版