我在WWDC 2014中观看了国际化的高级主题,他们建议这样做。此外,我们可以使用不同语言的自定义格式。所以,我这样做。
if([[Helpers getLocale]isEqualToString:@"zh-Hans"] || [[Helpers getLocale]isEqualToString:@"zh-Hant"])
{
formatDate.dateFormat = @"yyyy MMM d"; //TODO: how to set for Chinese? dd also not okay
}
else
{ //Default as English..en
formatDate.dateFormat = @"d MMM yyyy";
}
然而,对于中文,我无法正确设置,我只能得到这个。 2014 8月22日。如何设置中文日期的格式,如第一张图片所示? (使用自定义格式)
答案 0 :(得分:2)
您应该使用dateFormatFromTemplate
方法。这将采用您首选的日期格式并将其转换为区域设置的格式。如果必须,这将引入任何其他特殊字符,您不必担心它
作为一个例子,这是我做的转换我喜欢的格式" dd MMM yyyy"等同于中文的格式。
// input format in this case is "dd MMM yyyy"
// when language is set to Chinese, I will change it accordingly like this.
NSLocale *locale = [NSLocale currentLocale];
NSString *language = [locale objectForKey:NSLocaleLanguageCode];
if ([language containsString:@"zh"])
{
format = [NSDateFormatter dateFormatFromTemplate:format options:0 locale:locale];
}
// output format from this code for chinese languages is yyyy年M月dd日
您不必手动插入/删除特殊字符。希望这有帮助
答案 1 :(得分:1)
因为我不懂中文。我们可以使用这种格式。 y年M月d日
答案 2 :(得分:1)
请尝试此代码
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hant_HK"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:locale];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
//[dateFormatter setTimeStyle:NSDateFormatterShortStyle];//if you want show time, please enable this line
NSDate *date = [NSDate date];
NSString* str = [dateFormatter1 stringFromDate:date];