Ios NSDateFormatter区域设置不工作

Ios NSDateFormatter区域设置不工作,ios,objective-c,cocoa-touch,nsdateformatter,Ios,Objective C,Cocoa Touch,Nsdateformatter,我正在使用以下代码从日期获取NSString NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateStyle = kCFDateFormatterLongStyle; df.timeStyle = kCFDateFormatterNoStyle; df.doesRelativeDateFormatting = YES; [df setLocale:[NSLocale currentLocale]]; [df setTimeZ

我正在使用以下代码从日期获取
NSString

NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = kCFDateFormatterLongStyle;
df.timeStyle = kCFDateFormatterNoStyle;
df.doesRelativeDateFormatting = YES;
[df setLocale:[NSLocale currentLocale]];
[df  setTimeZone:[NSTimeZone systemTimeZone]];
NSString *dateString=[df stringFromDate:myDate];

但即使更改了区域设置,它也会显示为“今天”、“昨天”。我想显示该语言的本地化语言?

您好,我为LocalTime编写了此函数,它将日期输入作为字符串,并转换为本地时间字符串。希望对你有帮助

+(NSString*)LocalTimeWitheDateString:(NSString*)dateString{
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    [formatter setTimeZone:timeZone];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date =[formatter dateFromString:dateString];
    NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];
    [formatter setTimeZone:localTimeZone];
    NSString *LnewTimeZoneDateString = [formatter stringFromDate:date];
    return LnewTimeZoneDateString;
}

我使用了您的代码并创建了以下内容:

NSDate *yesterday;
NSTimeInterval interval;

NSCalendar *cal = [NSCalendar currentCalendar];

[cal rangeOfUnit:NSDayCalendarUnit
       startDate:&yesterday
        interval:&interval
         forDate:[NSDate date]];

yesterday = [yesterday dateByAddingTimeInterval:-interval];



NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = kCFDateFormatterLongStyle;
df.timeStyle = kCFDateFormatterNoStyle;
df.doesRelativeDateFormatting = YES;

[@[[NSLocale localeWithLocaleIdentifier:@"de_DE"], [NSLocale localeWithLocaleIdentifier:@"es_ES"],[NSLocale localeWithLocaleIdentifier:@"en_US"]] enumerateObjectsUsingBlock:^(NSLocale *locale, NSUInteger idx, BOOL *stop) {
    [df setLocale:locale];
    [df  setTimeZone:[NSTimeZone systemTimeZone]];
    NSString *dateString=[df stringFromDate:yesterday];
    NSLog(@"%@", dateString);
}];
它输出正确

Gestern
ayer
Yesterday
你的问题一定出在别的地方

在命令行程序中测试



确保在更改设备/模拟器上的语言后,在再次打开应用程序之前完全关闭该应用程序。

您是否从模拟器或设备上尝试过此代码?
NSDateFormatter*df=[[NSDateFormatter alloc]init];df.dateStyle=kCFDateFormatterLongStyle;df.timeStyle=kCFDateFormatterNoStyle;df.doesRelativeDateFormatting=是;[df setLocale:[NSLocale localeWithLocaleIdentifier:@“ru_ru”];[df setTimeZone:[NSTimeZone systemTimeZone]];NSString*dateString=[df stringFromDate:[NSDate date]]这就像一个符咒。我得到了“今天”的俄文名字,比如“ССССГааааа”你在更改语言环境后的意思是什么?给我们完整的代码。您当前所在地区的语言设置是什么?这不是问题的答案。正如@Ilario所建议的,可能是模拟器与设备。