NSDateFormatter为中文日期

问题描述 投票:0回答:3

我在2014年WWDC上观看了国际化的高级主题,他们推荐这样的。此外,我们可以使用不同语言的自定义格式。所以,我这样做。

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

objective-c localization nsdate nsdateformatter chinese-locale
3个回答
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
投票

因为我不懂中文。我们可以使用这种格式。 ÿ年中号月d日


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];
© www.soinside.com 2019 - 2024. All rights reserved.