2017-10-26 17 views
1

オランダの月を表示しようとしています。しかし、その月は英語で印刷されます。これはAndroid API 19以降で動作する必要があります。Jodaの日付時刻を使ってオランダの月を表示する方法

compile 'joda-time:joda-time:2.9.9' 

val test = DateTime() 

val l = Locale("nl_NL") // Dutch language, Netherlands country. 
val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l) 
val text = f.print(test) 

プリントアウト:

2017年10月26日

は次のようになります。

26 OKT 2017

答えて

2

あなたはを使用する必要があります。別のパラメータで言語と国コードを受信の2-arg constructor、:これにより

val l = Locale("nl", "NL") 

を、出力は次のとおりです。私のテストでは

26 OKT 2017

、あなたが望むように出力は大文字のOktではありませんが、それはAPIに組み込まれており、その制御はありません。 Oktを出力したい場合は、自分で文字列を操作する必要があります。

+0

okt to Oktは、substring()とtoUpperCase()で行うことができます。この問題には多くの回避策があります。 – LenglBoy

+0

thnx!これは正解です。 –

+0

@JimClermontsご協力いただき誠にありがとうございます! –

1

正解:

val l = Locale("nl", "NL") 
    val f = DateTimeFormat.forPattern("dd MMM yyyy").withLocale(l) 

    val dateStr = f.print(dateTime).substring(3, 4).toUpperCase() 
    val capitalizedDate = StringBuilder(f.print(dateTime)) 
    capitalizedDate.setCharAt(3, dateStr[0]) 

    return capitalizedDate.toString().replace(".", "") 
0

私はすでに同様の質問hereに答えました。 Calendarオブジェクトを使用して、地域化された月名を取得できます。完全な月名の

private String getMonthName(final int index, final Locale locale, final boolean shortName) 
{ 
    String format = "%tB"; 

    if (shortName) 
     format = "%tb"; 

    Calendar calendar = Calendar.getInstance(locale); 
    calendar.set(Calendar.MONTH, index); 
    calendar.set(Calendar.DAY_OF_MONTH, 1); 

    return String.format(locale, format, calendar); 
} 

例:

System.out.println(getMonthName(0, new Locale("NL"), false)); 

結果:

System.out.println(getMonthName(2, new Locale("NL"), true)); 

結果:短い月名のためjanuari

関連する問題