Ответ 1
Думаю, вам нужно взглянуть на:
+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale
В соответствии с документами:
Возвращает строку локализованного формата даты, представляющую компоненты формата даты, упорядоченные для указанного языкового стандарта. Возвращаемое значение Локализованная строка формата даты, представляющая компоненты формата даты, указанные в шаблоне, упорядоченные для локали, указанной в локали.
Возвращенная строка может содержать не те компоненты, которые заданы в шаблоне, но может, например, использовать локальные корректировки.
Обсуждение
Различные локали имеют разные соглашения для упорядочения компонентов даты. Этот метод используется для получения соответствующей строки формата для заданного набора компонентов для определенной локали (обычно вы используете текущую локаль - см. CurrentLocale).
В следующем примере показана разница между форматами дат для английского и английского языков:
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
NSString *dateFormat;
// NOTE!!! I removed the 'y' from the example
NSString *dateComponents = @"MMMMd"; //@"yMMMMd";
dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:usLocale];
NSLog(@"Date format for %@: %@",
[usLocale displayNameForKey:NSLocaleIdentifier value:[usLocale localeIdentifier]], dateFormat);
dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:gbLocale];
NSLog(@"Date format for %@: %@",
[gbLocale displayNameForKey:NSLocaleIdentifier value:[gbLocale localeIdentifier]], dateFormat);
// Output:
// Date format for English (United States): MMMM d, y
// Date format for English (United Kingdom): d MMMM y
Дополнительный код (добавьте это в код выше):
//
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.locale = gbLocale;
formatter.dateFormat = dateFormat;
NSLog(@"date: %@", [formatter stringFromDate: [NSDate date]]);
Смотрите здесь: Ссылка на класс NSDateFormatter