2017-12-26 39 views
1

平日と今月のような言語を変更すると、自動的にローカライズされるように、今日の昨日から日付を抽出したいです。Date()から今日、昨日を抽出し、平日と月のようにローカライズする方法は?

let dateFormatter = Foundation.DateFormatter() 
dateFormatter.dateFormat = "MMMM dd, yyyy" 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
dateFormatter.timeZone = TimeZone(identifier: "UTC") 
let dateStr = dateFormatter.string(from: datePickerView.date) 
let timeStr = "00:00:00.000" 

let dateString = NSString(format:"%@ %@",dateStr,timeStr) 
let mainDF = Foundation.DateFormatter() 
mainDF.dateFormat = "MMMM dd, yyyy hh:mm:ss.SSS" 
mainDF.locale = Locale(identifier: "en_US_POSIX") 
mainDF.timeZone = TimeZone(identifier: "UTC") 
let date = mainDF.date(from: dateString as String) 

はどのようにこれを達成するために:私は使用していローカライズされた日付について

コード?

+1

はしませんでしたあなたを得る。 –

+0

これはあなたを助けます:https://github.com/chrisamanse/iOS-NSDate-Utyilities –

+0

私はApple Make Todayセクションと、その言語をその言語に適用するように変更すると、今日の作り方、昨日のようにローカライズを意味する)?私は直接抽出することができます。 @dahiya_boy – Amey

答えて

2

DateFormatterには、このフォーマッタに設定されたロケールを使用して日付を相対形式で表示する特別なフラグがあります。doesRelativeDateFormatting

...日付フォーマッタがそれ は相対的な日付を示します - つまり などのフレーズ「今日」や「明日」と、その出力の日付コンポーネントを置き換え可能な相対日付フォーマットを使用している場合。 利用可能な フレーズは、日付フォーマッタのロケールによって異なります。将来の の日付のために、英語のみ「明日、」可能性があり、一方、フランスは 「明後日の翌日を」許可することがあります...

例:

let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale.autoupdatingCurrent // Using system locale 
dateFormatter.doesRelativeDateFormatting = true // Enabling relative date formatting 

// other dataFormatter settings here, irrelevant for example 
dateFormatter.timeStyle = .none 
dateFormatter.dateStyle = .medium 

let now = Date() 
let dateString: String = dateFormatter.string(from: now) 
print("dateString: \(dateString)") // Prints `dateString: <Today in current locale>` 
+0

私はスペイン語に言語を変更したり、他の言語をサポートしていますか?アプリケーションは10-11言語をサポートしているので、動作するか、すべてのロケールで変換するコードを記述する必要がありますか? – Amey

+0

@Amey、あなたの 'DateFormatter'で設定されたロケールを使用します。 ['.current'](https://developer.apple.com/documentation/foundation/locale/2293654-current)や[' .autoupdatingCurrent'](https://developer.apple.com/documentation/foundation)のようなロケール/ locale/2293741-autoupdatingcurrent)はシステム設定のロケールを使用しています。したがって、それらを使用する場合は、サポートされているすべてのロケールをハードコードする必要はありません。 – user28434

+0

あなた郵便番号それはuser28434 – Amey

関連する問題