我正在使用NSDateFormatter,问题在于它的一致性。如果我使用kCFDateFormatterMediumStyle,它会在模拟器中提供格式为“2009年11月26日”,但在设备上它会给出“2009年11月26日”。
现在我有了一个问题,这个NSFormatter在不久的将来是否值得信赖,或者来自苹果的更新是否可以再次改变风格?
答案 0 :(得分:17)
虽然上面提到的其他答案在技术上是正确的,但它并没有为您提供所需的解决方案。虽然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];
答案 1 :(得分:3)
NSDateFormatter根据设备上的国际设置将日期格式化为用户的首选项。因此,您永远不会期望此字符串是一致的,因为日期在世界各地显示的方式不同。
我发现将日期格式化为字符串(用于提供给Web服务器等)的最佳方法是使用NSDateComponents并将它们转换为字符串。