http://apple.com/iphone的iPhone在esoteric reasons的状态栏中有9:41 AM
。我正在尝试为我的应用制作本地化的屏幕截图,因此我咨询了http://apple.com/cn/iphone,他们始终如一地使用上午9:41
。但是,当我使用zh-Hans
标记将我的区域设置设置为zh-Hant
或-AppleLanguages
时,NSDateFormatter
会吐出9:41 上午
。这是我正在使用的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *originalLocale = dateFormatter.locale;
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
[dateFormatter setDateFormat:@"h:mm a"];
NSDate *date = [dateFormatter dateFromString:@"9:41 AM"];
dateFormatter.locale = originalLocale;
NSString *dateString = [dateFormatter stringFromDate:date];
此代码在en_US
中生成正确的格式,但在zh-Hant
中生成错误的格式。有没有办法获得@"h:mm a"
的本地化版本,除了为每种语言编写硬编码?
答案 0 :(得分:2)
请勿设置dateFormat
,请设置timeStyle
以访问相应的内置格式。 NSDateFormatterMediumStyle
对我来说是正确的。如果你想要它还有dateStyle
。
所以,示例代码:
NSDateFormatter *newformatter = [NSDateFormatter new];
newformatter.locale = [NSLocale localeWithLocaleIdentifier:@"zh-Hant"];
newformatter.timeStyle = NSDateFormatterMediumStyle;
NSLog(@"%@", [newformatter stringFromDate:[NSDate date]]);
输出:
上午12:10:40