LoginSignup
14
8

More than 3 years have passed since last update.

日付を適切にローカライズする[Kotlin]

Posted at

ローカライズをしようと思った時に、ちょっと厄介なのが日付部分です。言語によって文字列も、記述順序も変わります。が、 DateFormat にある getBestDateTimePattern というメソッドを使えばそこらへんを自動でよろしくやってくれます。ということでこの記事では getBestDateTimePattern を紹介しようと思います。

getBestDateTimePattern の特徴

  • API Level 18 (Android 4.3)以上で使用可能
  • 何の日付要素を表示するか(yyyyMMなど)を細かく設定できる
  • 適切な日付要素の順番に並べてくれる

サンプルコード

private fun localizedDateString(epochSecond: Long): String {
    val local = Locale.getDefault()
    val format = DateFormat.getBestDateTimePattern(local, "EEEMMMd")
    val dateFormat = SimpleDateFormat(format, local)
    return dateFormat.format(epochSecond)
}

実行結果

設定アプリから言語を変更して試した結果がこちらです。Localeと結果文字列を出力しました。

ja_JP: 1月29日(水)
en_US: Wed, Jan 29
en_GB: Wed 29 Jan
es_ES: mié., 29 ene.
de_CH: Mi., 29. Jan.

getBestDateTimePattern の第二引数には"EEEMMMd"と渡しているのに、言語に合わせて順番や書式が自動変換されているところが注目ポイントです。

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8