Nsdateformatter 用于特定语言,如西班牙语

Nsdateformatter for specific language like Spanish

我的申请使用两种语言,一种是英语,另一种是西班牙语。现在我从服务器收到时间戳,我需要在 "MMM dd, yyyy" 格式中显示日期。 这给了我 "Dec 23, 2017" 但是当我将它转换成西班牙语时,我需要用西班牙语显示月份名称。 你能建议我用西班牙语指定 12 个月的名称作为缩写形式还是 NSDateFormatter 有这种类型的选项。

  NSDate *date = [dateFormatter dateFromString:[[[webserviceDict valueForKey:@"CurrentWeekEarning"]objectAtIndex:i-1]valueForKey:@"date"]];
                        [dateFormatter setDateFormat:@"MMM dd, yyyy"];
                        strTitle = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:date]];

对于您需要设置定位的特定语言

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

[格式化程序 setDateStyle:style];

[格式化程序 setDateFormat:@"MMM dd, yyyy"];

NSDate *temp= [格式化程序 dateFromString:strDate];

[格式化程序 setDateFormat:format];

[格式化程序 setLocale:[NSLocale currentLocale]];

只需设置语言环境并从模板创建格式(以设置正确的顺序):

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"es"];
[formatter setLocalizedDateFormatFromTemplate:@"yyyyMMMdd"];
NSString *localizedDate = [formatter stringFromDate:[NSDate date]];
NSLog(@"Localized date: %@", localizedDate); // 26 dic 2017

无需手动添加逗号或其他分隔符。他们也依赖于语言。

同样可以使用预定义格式实现:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"es"];
formatter.timeStyle = NSDateFormatterNoStyle;
formatter.dateStyle = NSDateFormatterMediumStyle;

Swift 5.2 示例,设置西班牙语 "es_ES" locale:

let today = Date()
let formatter = DateFormatter()

formatter.dateStyle = .long

formatter.locale = .init(identifier: "es_ES")
self.dateString = formatter.string(from: today)