我正在将从服务器返回的字符串转换为NSDate对象以供进一步使用。
以下是来自服务器的示例字符串:2011-01-14T16:05:48.555+05:00
而且,我使用[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
我能够使用iOS 3.2上的dataFromString方法(设备和SIM卡)将其成功转换为NSDate对象。
但是,相同的代码在设备和版本的iOS 4.2上返回nil。 sim两者。
我还尝试了许多日期格式模式的变体,例如:
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"];
[dateFormatter setDateFormat:@"YYY-MM-DD'T'HH:mm:ss.fffK"];
但没有任何作品!
我在这里错过了什么吗?
编辑:我尝试对输入字符串进行硬编码,在尝试了很多变体之后,以下字符串2011-01-14T16:05:48.555+0500
与"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
一起使用
请注意,此字符串与服务器之间的唯一区别是; TimeZone值中的冒号(:)。我试图找到一个日期模式,我可以在时区中提到冒号而没有成功。
任何线索??
答案 0 :(得分:1)
我不知道你问题的正确答案,但你可以尝试这个解决方案:
您可以在服务器返回的字符串中手动删除timeZone值中的冒号(:)并将此字符串写入new,然后使用“yyyy-MM-dd'T'HH:mm:ss.SSSZ”。
源代码:
NSString *stringFromServer=@"2011-01-14T16:05:48.555+05:00";
NSString *str1 = [stringFromServer substringToIndex:26];
NSString *str2 = [stringFromServer substringFromIndex:27];
NSString *result=[NSString stringWithFormat:@"%@%@",str1,str2];
所以如果这样的话:
编辑:我尝试对输入字符串进行硬编码,在尝试了很多变化后,以下字符串2011-01-14T16:05:48.555 + 0500使用“yyyy-MM-dd'T'HH:mm:ss .SSSZ” 块引用
然后字符串“result”将与“yyyy-MM-dd'T'HH:mm:ss.SSSZ”一起使用