NSDateFormatter为中文日期

时间:2014-08-22 03:26:19

标签: objective-c localization nsdate nsdateformatter chinese-locale

我在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日。如何设置中文日期的格式,如第一张图片所示? (使用自定义格式)

enter image description here

enter image description here

3 个答案:

答案 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];