Подтвердить что ты не робот

NSDateFormatter "Месяц" в 3 буквах вместо полного слова

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-YYYY HH:mm"];        
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];

Если я выбираю MM я получаю месяц в номере: 09-05-2012 15:33 Если я выбираю MMMM я получаю месяц в слове: 09-May-2012 15:33

То, что я хотел, был месяц в сокращении 3 букв.
Например: January будет Jan

В этом случае май правильно, потому что он имеет только 3 буквы.

4b9b3361

Ответ 1

Вы пробовали: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];, а затем [formatter stringFromDate:someNSDate];

Ответ 2

ЕСЛИ вы получите две вещи в неправильном порядке, вы не получите ожидаемый результат.

[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];

НЕ дает те же результаты, что и:

[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];

(Второй из этих двух фрагментов теперь с радостью передает Sep Oct и т.д. в моем приложении)

Ответ 3

В SWIFT

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "dd MMM yyyy HH:mm"

dateFormatter.stringFromDate(NSDate())

Ответ 4

Это упрощенное решение, которое работает со Swift 4 для получения трехбуквенного вывода:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"

И проверить:

print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40

Как отмечалось ранее, MMM является правильным синтаксисом для получения желаемого результата месяца.

Ответ 5

На самом деле вы можете установить свой dateStyle на средний (т.е. "Jan", "Feb" и т.д.) следующим образом:

[formatter setDateStyle:NSDateFormatterMediumStyle];

Ответ 6

для быстрой 4 идут с:

if let dateFormatter = DateFormatter(){
    dateFormatter.dateStyle = .medium
    // eventually:
    //let locale = Locale(identifier: ...                       
    //dateFormatter!.locale = locale
    dateFormatter.dateStyle = .medium
    dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss"
 } else..
        ..

Ответ 7

Для тех, кто не набирает полный месяц с помощью "МММ", вы можете получить его с помощью

dateFormatter.dateFormat = "dd MMMM yyyy"

Проверено на Swift 4.2