DateFormatter localizedString - только день и месяц, без года

Можно ли получить локализованную строку из даты только с месяцем и днем?

let localizedDate = DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .none)

Это печатает Sept 15, 2017 или же 15 Sep 2017,

Я хотел бы соблюдать формат даты пользователя, а не отображать год, только месяц и день. Я имею в виду Sept 15 или же 15 Sep, Является ли это возможным?

1 ответ

Вы можете создать формат только для дня и месяца и использовать его для создания шаблона формата. DateFormatter затем локализует его. Как пример с (Xcode9) детской площадки:

let date = Date()
let customFormat = "ddMMMM"

let gbLocale = Locale(identifier: "en_GB")
let ukFormat = DateFormatter.dateFormat(fromTemplate: customFormat, options: 0, locale: gbLocale)
let usLocale = Locale(identifier: "en_US")
let usFormat = DateFormatter.dateFormat(fromTemplate: customFormat, options: 0, locale: usLocale)

let formatter = DateFormatter()
formatter.dateFormat = ukFormat
formatter.string(from: date) // -> "09 September"

formatter.dateFormat = usFormat
formatter.string(from: date) // -> "September 09"

Если вы проходите в Locale.current вместо templateFormatter, который я создал в качестве примера, вы получите локализованные версии вашего шаблона.

Ваш вопрос спрашивает о формате короткого месяца, чтобы вы могли заменить "ММММ" в пользовательском формате на "МММ", чтобы вместо сокращенного полного названия отображалось название месяца. и "d" вместо "dd", чтобы не иметь "0" в дате. Я уверен, что вы понимаете, о чем я.

Другие вопросы по тегам