dateFromString 在 iOS 4.2 上返回 nil,在 3.2 上运行良好!
Posted
技术标签:
【中文标题】dateFromString 在 iOS 4.2 上返回 nil,在 3.2 上运行良好!【英文标题】:dateFromString returns nil on iOS 4.2, works fine on 3.2! 【发布时间】:2011-01-14 11:57:00 【问题描述】:我正在将从服务器返回的字符串转换为 NSDate 对象以供进一步使用。
这是来自服务器的示例字符串:2011-01-14T16:05:48.555+05:00
而且,我使用[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
我能够在 ios 3.2 上使用 dataFromString 方法成功地将其转换为 NSDate 对象(设备和 sim 两者)。
但是,相同的代码在 iOS 4.2 上的设备和 sim 上都返回 nil。
我还尝试了许多日期格式模式的变体,例如:
[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 值中的冒号 (:)。我试图找到一个可以在时区中提及冒号但没有成功的日期模式。
有什么线索吗??
【问题讨论】:
见***.com/questions/4330137/… 感谢您的提及,它有帮助! 【参考方案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 .SSZ" 块引用
然后字符串“result”将与“yyyy-MM-dd'T'HH:mm:ss.SSSZ”一起使用
【讨论】:
是的,这与马丁在他的评论中发布的内容相似。到目前为止,这是我找到的唯一可行的解决方案,但我仍在寻找更好的解决方案。以上是关于dateFromString 在 iOS 4.2 上返回 nil,在 3.2 上运行良好!的主要内容,如果未能解决你的问题,请参考以下文章
为啥 NSFormatter dateFromString 偶尔会返回 nil?
NSDateFormatter dateFromString 格式字符串问题
为啥我需要保留NSDateFormatter dateFromString的结果: