2017-09-09 2 views
1

月から日までの間のみ、ローカライズされた文字列を取得できますか?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)遊び場の例として:あなたはtemplateFormatterの代わりに、私が作成した例のものにLocale.currentに渡す場合

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" 

、その後、あなたはテンプレートのローカライズされたバージョンを取得します。

短い月形式について質問して、カスタム形式の "MMMM"を "MMM"に置き換えて、完全な月の代わりに短縮された月の名前を表示させることができます。 "dd"の代わりに "d"を付けて、日付に "0"を付けないようにします。私はあなたが私の言いたいことを知っていると確信している

+0

良い音です。チェックする必要がある;) –