2017-07-19 10 views
-1

を変換:のSimpleDateFormat - 私は、次のような形式を定義し、他のロケールに

sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault()) 

を今、私はこの1つのようないくつかのデバイス上の例外を取得:

java.lang.IllegalArgumentException: Unknown pattern character 'Y' 

だから、問題はYではない、ありますローカルのこのデバイスでサポートされています。だから私は、次のように形式を変更する必要があります。

// the string format is formatted in english, so we pass in Locale.ENGLISH 
new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.ENGLISH) 

質問

をどのように私は今、ロケール言語で日付を印刷するには、このSimpleDateFormatを使用できますか?私はEEEEがドイツ語、英語、スペイン語などであることを望みます。ですから、英語の書式文字列を使用する必要がありますが、書式設定された文字列を現地語で印刷する必要があります。これどうやってするの?

SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault()); 
Date d = new Date(); 
String formatted = sdf.format(d); 

期待

DE: Juli 2017\nMittwoch, 2017 
EN: July 2017\nWednesday, 2017 

アイデア

new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault());のような現在のローカルでSimpleDateFormatを作成しますが、今私は確認することはできません

new SimpleDateFormat("MMMM dd'\n'EEEE',' yyyy", Locale.ENGLISH) 

しかし:コンストラクタに渡された私の文字列が

+1

入力日はどうなっていますか?注意してください* Y *は週年* y *は年です – Jens

+0

'new Date()'などと似ています...それは質問ですか? – prom85

+0

あなたの質問に[mcve]を追加してください – Jens

答えて

2

修正文字列はsibgle引用符の内側でなければなりません(例外が示すように、Yは、すべてのロケールで有効ではありません)...現在のロケールで有効です\nは改行です。あなたはそれを望んでいます。

UPDATE

(例外が示すように、Yは、すべてのロケールに有効でない): Yは、すべてのロケールに有効です!

+0

私はそれが欲しい、はい。しかし、どのように私は英語のパターンで日付形式を定義するが、任意のロケールで印刷しますか? – prom85

+1

パターンはロケールに依存しません。出力だけがロケール依存です – Jens

+0

私の引用符がないため例外が発生していますか? – prom85

関連する問題