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" в дате. Я уверен, что вы понимаете, о чем я.