質問: new SimpleDateFormat("yyyy年MM月dd日 E曜日"); System.out.println(sdf.format(c.getTime())); //フォーマットパターン変更して表示する sdf.applyPattern("a hh:mm:ss SSS"); System.out.println(sdf.format(c.getTime())); } } ``` ### 補足情報 LocaleクラスのgetDefaultメソッドを使用して、 自身のパソコンの言語コード、国コードを確認すると、 「日本語」、「日本」が設定されている事を確認しております。 【環境】 OS : macOS High Sierra (10.13.2) IDE : Eclipse Oxygen.1a Release (4.7.1a) JRE : 1.8.0_144
回答: Macintosh環境でないので参考にならないかもですが・・・ 自分の環境はWindows10なのですが似たようなこと(?)が起きました。 1. Windows10にインストールしているWindows用のJDK(jdk9)を用いてcygwin上から実行すると期待通りになります。 2018年01月05日 金曜日 午前 09:44:49 190 2. WSL(Windows Subsystem for Linux)上のopenjdk-9で実行すると 2018年01月05日 Fri曜日 AM 09:44:49 190 (LANG=ja_JP.UTF-8) 1.はWindows用のJDKなのでWindows設定からロケールを読み込めているのだろうと思いました。一方2.の方はサポートされているロケールにそもそもjaが入ってませんでした。LANG=ja_JP.UTF-8を設定してもダメのようです。 ``` $ locale -a C C.UTF-8 POSIX en_US.utf8 ``` JRE内部には日本語ロケール用の情報が含まれているような気がしたのでロケールの設定方法について調べ以下のようにしてみると期待通りになりました。(ちなみにTZも未設定だったので`export TZ=Asia/Tokyo`に設定しました) ``` $ export _JAVA_OPTIONS="-Duser.language=ja -Duser.country=JP" $ java SimpleDateFormatSample 2018年01月05日 金曜日 午前 10:09:26 739 ``` WSLはまだできたてのため色々いけてない部分が多いのだろうと思います。Macintoshではどうなのかわかりませんが、過去色々とみた限りではデフォルトでjavacがうまく日本語を認識してくれないみたいな記事も見かけましたので、「何も考えなくても自動的にうまくいく」ようにはなってない部分があるのかも知れません・・・ 追記: > > Macintoshではどうなのかわかりませんが > > > と言いましたがMacじゃなくてMac用のJREがいけてないのかも・・・という気もします。