4303


OracleのJDK6実装では、

[code]

    Locale locale = new Locale("ja", "JP", "JP"); // ja_JP_JP
    
[/code]

のロケールを利用することで和暦を扱うことができますが、Androidでは`GregorianCalendar`が返却される、という実装の違いがあります。

これはAndroidには`JapaneseImperialCalendar`が存在しない、ということなんでしょうか？

* * *

**UPDATE:** Android N にて[ICU4J Android フレームワーク
API](http://developer.android.com/intl/ja/preview/features/icu4j-framework.html)が提供されました。

[code]

    android.icu.util.Calendar calendar = new android.icu.util.JapaneseCalendar();
    android.icu.text.DateFormat df = new android.icu.text.SimpleDateFormat("Gy年M月d日", new android.icu.text.DateFormatSymbols(calendar, Locale.JAPANESE));
    df.setCalendar(calendar);
    Log.d("Calendar", df.format(new Date())); // 平成28年4月30日
    
[/code]

Android標準で和暦を扱うことができるようになりました（ただし Android N 以降のみ）。


CC BY-SA 3.0
2015-01-08T14:30:11.357
4302
2016-04-30T09:19:31.490
2016-04-30T09:19:31.490
5337
5337
question
android
Androidに和暦を扱えるCalendarは存在しますか？


Androidには`JapaneseImperialCalendar`は存在しないようですね。

参考：[androidxref.com/5.0.0_r2でのJapaneseImperialCalendar検索結果](http://androidxref.com/5.0.0_r2/search?q=JapaneseImperialCalendar&defs=&refs=&path=&hist=&project=abi&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=development&project=device&project=docs&project=external&project=frameworks&project=hardware&project=libcore&project=libnativehelper&project=ndk&project=packages&project=pdk&project=prebuilts&project=sdk&project=system&project=tools)


CC BY-SA 3.0
2015-01-08T14:47:45.050
4303
2015-01-08T14:47:45.050
49
4302
answer


すでに回答している方がいらっしゃいますがAndroidでは `JapaneseImperialCalendar` が使えません。

IBMが公開しているICUというライブラリがあります。  
[ICU - International Components for Unicode](http://site.icu-project.org/)  
このライブラリの `JapaneseCalendar` を使えば和暦を使うことができます。  
[JapaneseCalendar (ICU4J 54.1)](http://icu-
project.org/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html)

jarを置くか、Mavenを使って利用すればよいのではないでしょうか。


CC BY-SA 3.0
2015-01-08T15:44:51.223
4306
2015-01-08T15:44:51.223
724
4302
answer