Ответ 1
Вы пробовали: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];
, а затем [formatter stringFromDate:someNSDate];
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 буквы.
Вы пробовали: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];
, а затем [formatter stringFromDate:someNSDate];
ЕСЛИ вы получите две вещи в неправильном порядке, вы не получите ожидаемый результат.
[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];
НЕ дает те же результаты, что и:
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];
(Второй из этих двух фрагментов теперь с радостью передает Sep Oct и т.д. в моем приложении)
В SWIFT
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
dateFormatter.stringFromDate(NSDate())
Это упрощенное решение, которое работает со 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
является правильным синтаксисом для получения желаемого результата месяца.
На самом деле вы можете установить свой dateStyle на средний (т.е. "Jan", "Feb" и т.д.) следующим образом:
[formatter setDateStyle:NSDateFormatterMediumStyle];
для быстрой 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..
..
Для тех, кто не набирает полный месяц с помощью "МММ", вы можете получить его с помощью
dateFormatter.dateFormat = "dd MMMM yyyy"
Проверено на Swift 4.2