【问题标题】:dateFromString working in ios6 but not in ios5dateFromString 在 ios6 中工作,但在 ios5 中不工作
【发布时间】: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


【解决方案1】:

这不是 iOS5 或 iOS 6 的问题。请检查设置中设置的时间格式是12小时制还是24小时制。

它会解决你的问题

【讨论】:

  • 亲爱的维杰,感谢您的快速回复。我已经在设备上尝试过,它在 iOS5 上仍然返回 null,关于模拟器,我认为 Mac OS X 系统设置已考虑在内; “设置”的“常规”窗格中没有日期和时间选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
相关资源
最近更新 更多