格変化 - 国で変わる表現の違いについて
月名
英語や日本語での January や 1月 という表現はどんな場合でも単語は変化しない。
しかしロシア語、チェコ語、ポーランド語、フィンランド語などの一部の言語では「格変化」という語形の変化がある。
https://ja.wikipedia.org/wiki/%E6%A0%BC%E5%A4%89%E5%8C%96
「○月」を下記の2通りで表現する場合、格変化によりそれぞれ表現方法が異なる。
- 単独で「○月」と書く場合
- 年日などと合わせて「○年○月」「○月○日」と書く場合
例. フィンランド語の「1月」(http://whitebear0930.net/archives/5097 より)
| 日付の形式 | 表現 |
|---|---|
| ○月 | tammikuu |
| ○年○月など | tammikuuta |
Androidではこの表現を行うために 月名の日付形式として**「L」**パターンを用意している。
「L」であれば単独で使用する場合の月名が、「M」で単独で使用しない場合の月名が取得できる。
例. フィンランド語「1月」
| 日付形式 | 表現 |
|---|---|
| MMM | tammikuuta |
| MMMM | tammikuuta |
| LLL | tammi |
| LLLL | tammikuu |
単独で使用する & 省略形 の月名を取得したい場合は LLL を使用する。
MMM では省略形は取得できないことに注意。
格変化を持たない言語(英語、日本語など)では L は M と同じ扱いとなる。
曜日
曜日にも格変化があるため、単独で使用する場合の曜日用に「c」が用意されている。
例. フィンランド語「水曜」
| 日付形式 | 表現 |
|---|---|
| E, EE, EEE | ke |
| EEEE | keskiviikkona |
| EEEEE | K |
| EEEEEE | ke |
| c, cc, ccc | ke |
| cccc | keskiviikko |
| ccccc | K |
| cccccc | ke |
補足
日付形式のフォーマット
よく忘れるので付録。
何の文字を何個使うとこうなる、という例が細かく記載されている
android.icu.text.SimpleDateFormat の表が分かりやすいと思う。
Androidの日付パース用クラス
Androidで日付を表示する際に yyyy/MM/dd などの日付形式を使用してパースするクラスは色々ある。
- java.text.SimpleDateFormat
- android.text.format.DateFormat
- android.icu.text.SimpleDateFormat (API 24-)
- java.time.format.DateTimeFormatter (API 26-)
Androidのバージョンによっては使用できるものが増えている。
API 24 (Android 7.0) からはICU(International Components for Unicode)対応版の android.icu.text パッケージが追加された。
API 26 (Android 8.0) からはJava 8で実装された java.time パッケージが追加された。
Qiita : Java8の日時APIはとりあえずこれだけ覚えとけ
http://qiita.com/tag1216/items/91a471b33f383981bfaa
java.text.SimpleDateFormat はJava版とAndroid版で挙動が異なっているのでAndroidで開発する際にはJava版との動作の違いに注意
Qiita : Android と Java では SimpleDateFormat の書き方がこう違う
http://qiita.com/arai-wa/items/272c9a09386872b8c643
java.text.SimpleDateFormat のリファレンスを見ると、日付形式のパターン表に L と c は記載されてないけどちゃんと使えます。