4
处理NSDateFormatter语言环境“ feechur”的最佳方法是什么?
看起来 NSDateFormatter有一个“功能”意外地咬了你:如果执行简单的“固定”格式操作,例如: NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; [fmt setDateFormat:@"yyyyMMddHHmmss"]; NSString* dateStr = [fmt stringFromDate:someDate]; [fmt release]; 然后在美国和大多数语言环境中都可以正常工作...某人将手机设置为24小时制,则将12/24小时切换设置设为12。然后,上面的操作将“ AM”或“ PM”添加到结果字符串的末尾。 (例如, NSDateFormatter,我做错了什么还是一个错误?) (看看 https://developer.apple.com/library/content/qa/qa1480/_index.html) 显然,苹果公司宣布它为“ BAD”-按设计要求被破坏,他们将不予修复。 显然,该规避措施是为特定区域(通常是美国)设置日期格式化程序的语言环境,但这有点混乱: NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; [df setLocale: loc]; [loc release]; onsies-twosies还不错,但是我正在处理大约十种不同的应用程序,而我所研究的第一个应用程序有43种这种情况。 那么,对于宏/重写的类/如何在不使代码晦涩的情况下最大程度地减少更改所有工作的任何巧妙构想?(我的第一个本能是使用将在init方法中设置语言环境的版本覆盖NSDateFormatter。需要更改两行-分配/初始化行和添加的导入。) 添加 到目前为止,这是我要提出的内容-似乎适用于所有情况: @implementation BNSDateFormatter -(id)init { static NSLocale* en_US_POSIX = …