【发布时间】:2013-02-06 11:57:57
【问题描述】:
我知道有很多关于这个主题的主题,我已经全部阅读了。
在我的特殊情况下,在 iPhone 6.1 模拟器上进行测试时,dateFromString 工作正常,但在 iPhone 5.1 模拟器上返回 null。我还在几台 iOS6 和 iOS5 的设备上进行了测试,得出了相同的结论。
“输入”中的格式为:2013-02-15T18:00:00+03:00
我写了以下代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+zz:zz"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:input];
[dateFormatter setDateFormat:@"EEE'. 'dd' 'MMM' 'yyyy', 'HH':'mm"];
NSString *stringFromDate = [dateFormatter stringFromDate:dateFromString];
return stringFromDate;
...在模拟器和设备上在 iOS6 上获取 stringFromDate "Fri. 15 Feb 2013, 18:00" 和在 iOS5 上获取 "null"。
请帮帮我
【问题讨论】:
-
你为什么要设置
[dateFormatter setDateFormat:...]两次? -
在将输入字符串转换为 NSDate 后,我正在使用相同的 dateFormatter 将格式更改为新格式
-
哦,好的。经过一些研究,我发现可能会处理用户(或模拟器模拟)所在位置的更改。 developer.apple.com/library/ios/#qa/qa1480/_index.html
-
感谢您的链接!不幸的是,我已经尝试了那里所说的所有内容,但仍然得到相同的结果... PS:6.1 和 5.1 模拟器都在同一个 XCode 安装上(因此两者具有相同的系统时间和日期设置)
-
谢谢,这个帖子把我引向另一个对我有帮助的帖子:我能够通过使用以下代码行来解决它: NSDate *theDate = nil; NSError *error = nil; if (![dateFormatter getObjectValue:&theDate forString:input range:nil error:&error]) {}
标签: objective-c ios5 ios6 nsdate nsdateformatter