我正在使用NSDateFormatter,问题在于它的一致性。如果我使用kCFDateFormatterMediumStyle,则格式为“2009年11月26日”。在模拟器中但在设备上它给出了“2009年11月26日”。

现在我有了一个问题,这个NSFormatter在不久的将来是否值得信赖,或者苹果的更新能否再次改变风格?

有帮助吗?

解决方案

NSDateFormatter根据设备上的国际设置将日期格式化为用户的首选项。因此,您永远不会期望此字符串是一致的,因为日期在世界各地显示的方式不同。

我发现将日期格式化为字符串(用于提供给Web服务器等)的最佳方法是使用NSDateComponents并将它们转换为字符串。

其他提示

虽然上面提到的其他答案在技术上是正确的,但它并没有为您提供所需的解决方案。虽然NSDateFormatter默认使用用户区域设置(并且因此不会给您带来有用的结果),但您可以请求特定区域设置以获得一致的结果:

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[frm setLocale:en_US];
[en_US release];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top